SYSCONF(3)

名前
sysconf - 動作中に設定情報を取得する

書式
#include <unistd.h>

long sysconf(int name);

説明
sysconf() は、(システムの)動作中に、アプリケーションがシステム制限の値やオプショ ンを測定する方法を提供する。

<unistd.h> には、同等の機能を持ったマクロが定義されているが、これらを使って得られ る情報は、昔からあるものに限られている。 アプリケーションから変更できる制限値を知りたい場合には、 sysconf() を呼び出すとよい。最近のものを含め、より多くの情報を得ることができる。

特定のファイルに関する情報を得るためには、 fpathconf() または pathconf() を見ること。

name において、以下のような値がサポートされている。 まず、POSIX.1 互換の値:

_SC_ARG_MAX
    exec() 関数ファミリーの引数の最大長。対応するマクロは ARG_MAX である。

_SC_CHILD_MAX
    ユーザ ID あたりに同時に存在できるプロセス数、対応するマクロは _POSIX_CHILD_MAX である。

_SC_CLK_TCK
    一秒あたりのクロック数、対応するマクロは CLK_TCK である。

_SC_STREAM_MAX
    プロセスがいつでもオープンできるストリームの最大数。 対応する POSIX マクロは STREAM_MAX また、対応する標準 C マクロは FOPEN_MAX である。

_SC_TZNAME_MAX
    タイムゾーン名として使えるバイト数の最大値、対応するマクロは TZNAME_MAX である。

_SC_OPEN_MAX
    プロセスがいつでもオープンできるファイル数の最大値、対応するマクロは _POSIX_OPEN_MAX である。

_SC_JOB_CONTROL
    POSIX スタイルのジョブコントロールをサポートしているかどうかを示す、対 応するマクロは _POSIX_JOB_CONTROL である。

_SC_SAVED_IDS
    プロセスがセットユーザ ID(set-user-ID)かつセットグループ ID されている かどうかを表している。対応するマクロは _POSIX_SAVED_IDS である。

_SC_VERSION
    は、POSIX.1 標準が承認された、年と月を YYYYMML というフォーマットであらわす。 199009L という値は、1990 年のもっとも新しいバージョンを示す。

次に、POSIX.2 の値:

_SC_BC_BASE_MAX
    は、 bc(1) ユーティリティによって、受け入れられる obase 値の最大を表す。対応するマクロは、 BC_BASE_MAX である。

_SC_BC_DIM_MAX
    は、 bc(1) において、一つの配列中の要素の値の最大値を表す。 対応するマクロは BC_DIM_MAX である。

_SC_BC_SCALE_MAX
    は、 bc(1) において、許される scale の最大値を表す。 対応するマクロは、 BC_SCALE_MAX である。

_SC_BC_STRING_MAX
    bc(1) において、受け付けられる文字列長の最大値を表す。 対応するマクロは、 BC_STRING_MAX である。

_SC_COLL_WEIGHTS_MAX
    は、locale 定義ファイル中の LC_COLLATE キーワードのエントリに割り当てられ得る、重みの最大数を表す。 対応するマクロは、 COLL_WEIGHTS_MAX である。

_SC_EXPR_NEST_MAX
    は、 expr(1) において、括弧を用いてネストできる式の最大数。 対応するマクロは、 EXPR_NEST_MAX である。

_SC_LINE_MAX
    ユーティリティの入力における一行の最大長である。標準入力だけでなく、ファ イルからの場合にも適用される。この長さは、(一行の)後についている、改行 文字も含んでいる。 対応するマクロは、 LINE_MAX である。

_SC_RE_DUP_MAX
    繰り返し表記(interval notation) \{m,n\} に指定できる正規表現の繰り返し回数のの最大値。 この値に対応するマクロは、 RE_DUP_MAX である。

_SC_2_VERSION
    は、YYYYMML という書式で表した POSIX.2 標準のバージョンを表す。 対応するマクロは、 POSIX2_VERSION である。

_SC_2_DEV
    は、POSIX.2 C 言語開発機能をサポートしているかどうかをあらわす。 対応するマクロは、 POSIX2_C_DEV である。

_SC_2_FORT_DEV
    は、POSIX.2 FORTRAN 開発ユーティリティをサポートしているかどうかを あらわす。 対応するマクロは POSIX2_FORT_RUN である。

_SC_2_FORT_RUN
    は、POSIX.2 FORTRAN ランタイムユーティリティがサポートされているかどう かを表す。 対応するマクロは、 POSIX2_FORT_RUN である。

_SC_2_LOCALEDEF
    は、 localedef(1) を利用した、POSIX.2 における locale の作成をサポートするかを示す。 対応するマクロは、 _POSIX2_LOCALEDEF である。

_SC_2_SW_DEV
    は、POSIX.2 ソフトウェア開発ユーティリティオプションがサポートされてい るかどうかをあらわす。 対応するマクロは、 POSIX2_SW_DEV である。

返り値
返される値は、システムリソースの値である。問い合わせオプション(queried option)が利用できる場合 1 が返り、そうでなければ 0 が返る。また、エラー 時には -1 が返る。 errno 変数はセットされない。

準拠
POSIX.1, 提案中の POSIX.2

バグ
ARG_MAX を使うのは難しい、なぜなら、 exec() のためにどの程度の引数領域(argument space)が消費されるかというのは、ユー ザの環境変数によって特定されないからである。

いくつかの返り値はとても大きくなるだろう。それらは(大きすぎて)メモリを 割り当てるのは適当ではない。

POSIX.2 は、まだ、標準として認可されていない。このマニュアルページの情 報は、変更されうる。

関連項目
bc(1), expr(1), locale(1), fpathconf(3), pathconf(3)