_POSIX_ *(limits.h)vs _SC_ *(sysconf)

时间:2017-03-07 16:00:05

标签: linux posix

我刚注意到 limits.h中名为“_POSIX_ *”的宏(名称)类似于 sysconf 函数的参数。例如,有一个名为“_POSIX_ARG_MAX”的宏,我也可以使用“_SC_ARG_MAX”参数调用 sysconf 。当我们完全可以在limits.h中使用宏时,为什么我们首先需要 sysconf

1 个答案:

答案 0 :(得分:1)

_POSIX_*值是符合POSIX标准的最低要求。它们在所有平台上都具有相同的价值。实现支持的特定值可能更高。

来自man sysconf

  

对于变量或限制,通常有一个常量_FOO,可能在<limits.h>_POSIX_FOO中定义,可能在<unistd.h>中定义。如果未指定限制,则不会定义常量。如果定义了常量,则它会给出保证值,实际上可能支持更大的值。如果应用程序想要利用可能在系统之间更改的值,则可以调用sysconf()sysconf()参数将为_SC_FOO

例如,_POSIX_ARG_MAX为4096.但如果系统支持,sysconf(_SC_ARG_MAX)可能会返回更大的数字。