2017-03-07 17 views
1

我只注意到命名宏 「_POSIX_ *」 limits.h中是(namewise)類似的sysconf功能的參數。例如,有一個名爲「_POSIX_ARG_MAX」的宏,我也可以用參數「_SC_ARG_MAX」調用sysconf。爲什麼我們首先需要sysconf當我們完全可以在limits.h中使用宏時?_POSIX_ *(limits.h中)VS _SC_ *(的sysconf)

+1

'_POSIX_ *'是爲了符合POSIX而必須支持的最小值。 –

+0

@TavianBarnes謝謝〜!現在有道理。 – b1sub

回答

1

_POSIX_*值是符合POSIX標準的最低要求。他們將在所有平臺上具有相同的價值。實現支持的特定值可能會更高。

man sysconf

對於變量或限制,典型地,有一個恆定_FOO,在<limits.h>也許定義,或者_POSIX_FOO,在<unistd.h>也許定義。如果限制未指定,常數將不會被定義。如果常量被定義,它會給出一個保證值,而實際上可能會支持更大的值。如果應用程序想要利用系統之間可能會改變的值,可以撥打sysconf()sysconf()參數將爲_SC_FOO

例如,_POSIX_ARG_MAX是4096.但是,如果系統支持它,則sysconf(_SC_ARG_MAX)可能會返回更大的數字。

相關問題