微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么ARG_MAX没有通过limits.h定义?

在Fedora Core 7上,我正在编写一些依赖于ARG_MAX代码。 但是,即使我#include <limits.h> ,常量仍然没有定义。 我的调查显示它存在于<sys/linux/limits.h> ,但是这应该在Win32 / Mac / Linux中是可移植的,所以直接包含它不是一个选项。 这里发生了什么?

有没有一种好的方法来绕过运行EXE文件的限制?

在systemd中使用cpuQuota

linux命令xargs:它传递的参数的最大大小?

每个IP地址限制数据包每分钟

在受控环境下运行应用程序的问题(Win32)

不在limits.h中的原因是它不是在当前体系结构上根据位宽给出整数类型值范围的限制的数量。 这是由ISO标准分配给limits.h的角色。

您感兴趣的价值在实践中并不是硬件绑定的,并且可以因平台而异,也可能从系统构建到系统构建。

正确的做法是调用sysconf并询问“ARG_MAX”或“_POSIX_ARG_MAX”。 无论如何,我认为这是符合POSIX的解决方案。

加。 对于我的文档,根据您请求的值包含unistd.h或limits.h中的一个或两个。

还有一点:exec函数家族的许多实现都会返回E2BIG或类似的值,如果你尝试在超大的环境中调用它们的话。 这是exec可以实际返回的定义条件之一。

ARG_MAX在/usr/include/linux/limits.h中定义。 我的Linux内核版本是3.2.0-38。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐