SYSCONF(3)

名称
sysconf - コンフィグレーション可能なシステム変数を取得

書式
#include <unistd.h> long sysconf(int name)

解説
このインタフェースは、 p1003.1-88 により定義されたものです。 sysctl(3) を使えば、さらに一層完全なインタフェースを使用することができます。

sysconf() 関数は、 コンフィグレーション可能なシステムの制限 (system limit) またはオプション変数の現在の値を、 アプリケーションが調べるための方法を提供します。 引数 name は、照会するシステム変数を指定します。 それぞれの名前の値に対応するシンボリック定数は、 インクルードファイル <unistd.h> の中にあります。

使用できる値は次の通りです：

_SC_ARG_MAX
    execve(2) の引数の最大バイト数。

_SC_CHILD_MAX
    1 ユーザー ID あたりの同時プロセスの最大数。

_SC_CLK_TCK
    1 秒あたりの tick 数で表した統計クロック (statistics clock) の頻度。

_SC_NGROUPS_Max
    追加可能なグループの最大数。

_SC_OPEN_MAX
    1 ユーザー ID 当たりのオープン可能なファイルの最大数。

_SC_STREAM_MAX
    1 つのプロセスが一度にオープンできるストリームの最大数の最小値。

_SC_TZNAME_MAX
    時間帯 (timezone) の名前としてサポートされるタイプの最大数の最小値。

_SC_JOB_CONTROL
    このシステムでジョブ制御が利用できるなら 1 を返し、 利用できない場合は -1 を返します。

_SC_SAVED_IDS
    保存された set-group および保存された set-user ID が 利用できる場合は 1 を返し、そうでない場合は -1 を返します。

_SC_VERSION
    システムが準拠しようと試みる ISO/IEC 9945 (POSIX 1003.1) のバージョン。

_SC_BC_BASE_MAX
    bc(1) ユーティリティにおける ibase/obase の最大値。

_SC_BC_DIM_MAX
    bc(1) ユーティリティにおける最大配列サイズ。

_SC_BC_SCALE_MAX
    bc(1) ユーティリティにおける最大スケール値。

_SC_BC_STRING_MAX
    bc(1) ユーティリティにおける最大ストリング長。

_SC_COLL_WEIGHTS_MAX
    ロケール定義ファイルにおける LC_COLLATE 順序キーボードのエントリに 割り当てることができる重みの最大数。

_SC_EXPR_NEST_MAX
    expr(1) ユーティリティでの括弧でネストできる式の最大数。

_SC_LINE_MAX
    テキスト処理ユーティリティの入力ラインのバイトで表した最大長さ。

_SC_RE_DUP_MAX
    インターバル表記を使うときに許される正規表現の繰り返し発生回数の最大数。

_SC_2_VERSION
    システムが準拠することを試みる POSIX 1003.2 のバージョン。

_SC_2_C_BIND
    システムの C 言語開発ファシリティで C 言語構築オプション (C-Language Bindings Option) が サポートされていれば 1 を返し、 サポートされていなければ -1 を返します。

_SC_2_C_DEV
    C 言語開発ユーティリティオプション (C-Language Development Utilities Option) が サポートされていれば 1 を返し、 サポートされていなければ-1 を返します。

_SC_2_CHAR_TERM
    POSIX 1003.2 に記述されている全操作が可能な端末タイプが、 最低 1 つサポートされていれば 1 を返し、 そうでなければ -1 を返します。

_SC_2_FORT_DEV
    FORTRAN 開発ユーティリティオプション (FORTRAN Development Utilities Option) が サポートされていれば 1 を返し、 サポートされていなければ -1 を返します。

_SC_2_FORT_RUN
    FORTRAN ランタイムユーティリティオプション (FORTRAN Runtime Utilities Option) が サポートされていれば 1 を返し、 サポートされていなければ -1 を返します。

_SC_2_LOCALEDEF
    ロケールの作成がサポートしていれば 1 を返し、 サポートされていなければ -1 を返します。

_SC_2_SW_DEV
    ソフトウェア開発ユーティリティオプション (Software Development Utilities Option) が サポートされていれば 1 を返し、 サポートされていなければ -1 を返します。

_SC_2_UPE
    ユーザーポータビリティユーティリティオプション (User Portability Utilities Option) が サポートされていれば 1 を返し、 サポートされていなければ -1 を返します。

戻り値
sysconf() の呼び出しが成功しなかったときは -1 が返され、 errno が適切な値に設定されます。 そうでないときは、 変数がサポートされていない機能に関連づけられていると -1 が返され、 errno は修正されません。 それ以外の場合は、現在の変数値が返されます。

エラー
sysconf() 関数が失敗して、ライブラリ関数 sysctl(3) について記されているエラーのいずれかに対応した errno が設定されることがあります。 さらに、次のようなエラーが報告されることがあります。

[EINVAL]
    name 引数の値が無効です。

参照
sysctl(3)

バグ
_SC_STREAM_MAX の値は最大値の最小値であり、 ANSI C の FOPEN_MAX と同じであることが要求されているので、 戻り値は極めて小さい誤解を招くような値になります。

規格
sysconf() の返す値が、呼び出したプロセスが生存している間に変化する 可能性があることを除いては、この関数は p1003.1-88 に準拠しています。

歴史
sysconf() 関数は、最初 4.4BSD に現れました。