EN JA
SYSCONF(3)
SYSCONF(3) FreeBSD Library Functions Manual SYSCONF(3)

名称

sysconf設定可能なシステム変数を取得する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < unistd.h>

long
sysconf( int name);

解説

このインタフェースは、 IEEE Std 1003.1-1988 (“POSIX.1”) によって定義されています。はるかに完全なインタフェースは、 sysctl(3) を使用して利用可能です。

sysconf() 関数は、設定可能なシステムの制限、またはオプション変数の現在の値を決定するためにアプリケーションのための方法を提供しています。 name 引数は、問い合わせされるシステム変数を指定します。各名前の値のためのシンボリック定数は、インクルードファイル < unistd.h> にあります。これらのパラメータへのアクセスを必要とするシェルプログラマは、 getconf(1) ユーティリティを使用するべきです。

利用可能な値は、次の通りです:

_SC_ARG_MAX
execve(2) への引数の最大バイト。
_SC_CHILD_MAX
ユーザ ID ごとの同時に存在するプロセスの最大数。
_SC_CLK_TCK
1 秒ごとの tick 単位の統計クロックの周波数。
_SC_IOV_MAX
readv(2), writev(2), recvmsg(2)sendmsg(2) によって使用される I/O ベクトルの要素の最大数。
_SC_NGROUPS_MAX
補足グループの最大数。
_SC_NPROCESSORS_CONF
設定されたプロセッサの数。
_SC_NPROCESSORS_ONLN
現在のオンラインのプロセッサの数。
_SC_OPEN_MAX
システムが新しいファイル記述子に割り当てる最大値 + 1。
_SC_PAGESIZE
バイト単位のシステムページのサイズ。
_SC_PAGE_SIZE
_SC_PAGESIZE と同等です。
_SC_STREAM_MAX
プロセスが一度にオープンされるストリームの最小の最大値。
_SC_TZNAME_MAX
時間帯 (タイムゾーン) の名前に対してサポートされるタイプの最小の最大値。
_SC_JOB_CONTROL
ジョブ制御がこのシステムで利用可能であるなら、1 を返し、そうでなければ、-1 を返します。
_SC_SAVED_IDS
退避 set-group ID と退避 set-user ID が利用可能であるなら、1 を返し、そうでなければ、-1 を返します。
_SC_VERSION
システムが準拠することを試みる IEEE Std 1003.1 (“POSIX.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
システムが準拠することを試みる IEEE Std 1003.2 (“POSIX.2”) のバージョン。
_SC_2_C_BIND
システムの C 言語開発機能が C 言語構築オプションをサポートしているなら、 1 を返し、そうでなければ、-1 を返します。
_SC_2_C_DEV
システムが、C 言語開発ユーティリティオプションをサポートしているなら、 1 を返し、そうでなければ、-1 を返します。
_SC_2_CHAR_TERM
システムが、 IEEE Std 1003.2 (“POSIX.2”) に記述されているすべての操作の能力がある、すくなくとも 1 つの端末タイプをサポートしているなら、1 を返し、そうでなければ、-1 を返します。
_SC_2_FORT_DEV
システムが、FORTRAN 開発ユーティリティオプションをサポートしているなら、 1 を返し、そうでなければ、-1 を返します。
_SC_2_FORT_RUN
システムが、FORTRAN ランタイムユーティリティオプションをサポートしているなら、 1 を返し、そうでなければ、-1 を返します。
_SC_2_LOCALEDEF
システムが、ロケールの作成をサポートしているなら、1 を返し、そうでなければ、-1 を返します。
_SC_2_SW_DEV
システムが、ソフトウェア開発ユーティリティオプションをサポートしているなら、 1 を返し、そうでなければ、-1 を返します。
_SC_2_UPE
システムが、ユーザポータビリティユーティリティオプションをサポートしているなら、 1 を返し、そうでなければ、-1 を返します。
_SC_AIO_LISTIO_MAX
サポートされている単一リスト I/O 呼び出しの I/O 操作の最大数。
_SC_AIO_MAX
サポートされている顕著な非同期 I/O 操作の最大数。
_SC_AIO_PRIO_DELTA_MAX
プロセスがそれ自体のスケジューリングの優先順位から非同期 I/P の優先順位を減少させることができる最大の量。
_SC_DELAYTIMER_MAX
タイマ満了の超過の最大数。
_SC_MQ_OPEN_MAX
オープンメッセージのキューの記述子プロセスの最大数は、保持されます。
_SC_RTSIG_MAX
使用されるアプリケーションのために予約されたリアルタイムシグナルの最大数。
_SC_SEM_NSEMS_MAX
プロセスにあるセマフォの最大数。
_SC_SEM_VALUE_MAX
セマフォにある最大値。
_SC_SIGQUEUE_MAX
プロセスがいつでも (複数の) レシーバで送信され、保留中 (pending) となっているキューに入れられたシグナルの最大数。
_SC_TIMER_MAX
サポートされているプロセス毎のタイマの最大数。
_SC_GETGR_R_SIZE_MAX
グループエントリバッファのサイズのために推奨されている初期値。
_SC_GETPW_R_SIZE_MAX
パスワードエントリバッファのサイズのために推奨されている初期値。
_SC_HOST_NAME_MAX
gethostname() 関数からの返されるホスト名 (終端にヌル文字を含んでいない) の最大の長さ。
_SC_LOGIN_NAME_MAX
ログイン名の最大の長さ。
_SC_THREAD_STACK_MIN
スレッドのスタック記憶域のバイト単位の最小サイズ。
_SC_THREAD_THREADS_MAX
プロセス毎に作成することができるスレッドの最大数。
_SC_TTY_NAME_MAX
端末デバイス名の最大の長さ。
_SC_SYMLOOP_MAX
ループがないパス名の解決で実際にたどることができるシンボリックリンクの最大数。
_SC_ATEXIT_MAX
atexit() に登録される関数の最大数。
_SC_XOPEN_VERSION
このシステムが適合している X/Open Portability Guide のバージョンを示す 4 以上の整数値。
_SC_XOPEN_XCU_VERSION
このシステムが適合している XCU Specification のバージョンを示す整数値。

これらの値も、存在していますが、標準ではありません:

_SC_CPUSET_SIZE
カーネルの cpuset のサイズ。
_SC_PHYS_PAGES
物理的なメモリのページ数。この値の製品と _SC_PAGESIZE の値は、32 ビットのマシンでのいくつかの設定で long をオーバフローする可能性があることに注意してください。

戻り値

sysconf() への呼び出しが成功しないなら、-1 が返され、 errno は、適切な値に設定されます。そうでなければ、変数がサポートされていない機能に関連付けられるなら、-1 が返され、 errno は、修正されません。そうでなければ、現在の変数値が返されます。

エラー

sysconf() 関数が失敗すれば、ライブラリ関数 sysctl(3) で明記されたエラーのいずれかが errno に設定されます。さらに、次のエラーが報告されます:
[ EINVAL]
name 引数の値が無効です。

規格

sysconf() によって返される値が、呼び出しているプロセスの存続期間を切り替えるという事実を除いて、この関数は、 IEEE Std 1003.1-1988 (“POSIX.1”) に適合しています。

歴史

sysconf() 関数は、 4.4BSD ではじめて登場しました。

バグ

_SC_STREAM_MAX の値は、最小の最大値であり、ANSI C の FOPEN_MAX として同じであることが要求されているので、返り値は、とんでもなく小さく誤解を与える値です。
April 26, 2013 FreeBSD