SYSCONF
Section: Linux Programmer's Manual (3)
Updated: 2019-05-09
Index
JM Home Page
roff page
名前
sysconf - 動作中に設定情報を取得する
書式
#include <unistd.h>
long sysconf(int name);
説明
POSIX では、アプリケーションがコンパイル時や実行時に、 特定のオプションがサポートされているかや、 設定可能な特定の定数や制限 (limits)
がどんな値かをテストすることができる。
コンパイル時に行うには、 <unistd.h> と <limits.h>
の両方もしくは一方をインクルードし、 特定のマクロの値を確認する。
実行時には、ここで説明する関数 sysconf() を使って数値を問い合わせることができる。
ファイルが存在するファイルシステムに依存する数値は、 fpathconf(3) と pathconf(3) を使って確認できる。
文字列の値は confstr(3) を使って確認できる。
これらの関数で取得される値は設定可能なシステム定数である。 これらはプロセスの生存期間の間は変化しない。
オプションを確認できるように、たいていは <unistd.h> で定数 _POSIX_FOO が定義されている。
定義されていないときは、実行時に問い合わせを行う必要がある。 その値が -1 に定義されているときは、そのオプションはサポートされていない。 0
に定義されているときは、関連する関数やヘッダーファイルが存在するが、 どの程度サポートされているかは実行時に確認しなければならない。 -1 でも 0
でもない値に定義されているときは、そのオプションがサポート されている。通常は、そのオプションについて記載した POSIX の改訂年月
を示す値になっている (例えば 200112L)。 glibc では 1 が設定されていると、そのオプションはサポートされているが、 POSIX
の改訂版がまだ発行されていないことを示す。 sysconf() の引数には _SC_FOO を指定する。 オプションのリストについては
posixoptions(7) を参照のこと。
変数や制限を確認できるように、たいていは、 <limits.h> で定数 _FOO が、
<unistd.h> で _POSIX_FOO が定義されている。 制限が規定されていない場合は定数は定義されない。
定数が定義されているときには、その定数は保証できる値であり、 実際にはもっと大きな値がサポートされていることもある。
アプリケーションがシステム毎に変化する値を利用したい場合には、 sysconf() を呼び出すことで実現できる。 sysconf()
の引数には _SC_FOO を指定する。
POSIX.1 変数
変数名、その値を取得するのに使われる sysconf() のパラメーター名、簡単な説明を以下に示す。
まず POSIX.1 互換の変数を示す。
- ARG_MAX - _SC_ARG_MAX
-
exec(3) 関数群の引数の最大長。 _POSIX_ARG_MAX (4096) 未満であってはならない。
- CHILD_MAX - _SC_CHILD_MAX
-
ユーザーID あたりの同時に存在できるプロセスの最大数。 _POSIX_CHILD_MAX (25) 未満であってはならない。
- HOST_NAME_MAX - _SC_HOST_NAME_MAX
-
gethostname(2) で返されるホスト名の最大長。末尾のヌルバイトは長さに含まれない。 _POSIX_HOST_NAME_MAX
(255) 未満であってはならない。
- LOGIN_NAME_MAX - _SC_LOGIN_NAME_MAX
-
ログイン名の長さの最大値。末尾のヌルバイトも長さに含まれる。 _POSIX_LOGIN_NAME_MAX (9) 未満であってはならない。
- NGROUPS_MAX - _SC_NGROUPS_MAX
-
補助グループ ID の最大数。
- clock ticks - _SC_CLK_TCK
-
1秒あたりのクロックティック数。 対応する変数は廃止された。この変数は当然ながら CLK_TCK と呼ばれていた。 (注意: マクロ
CLOCKS_PER_SEC からは情報は得られない: この値は 1000000 でなければならない)
- OPEN_MAX - _SC_OPEN_MAX
-
一つのプロセスが同時にオープンできるファイル数の上限。 _POSIX_OPEN_MAX (20) 未満であってはならない。
- PAGESIZE - _SC_PAGESIZE
-
バイト単位でのページサイズ。 1 より小さくなってはならない。
PAGE_SIZE - _SC_PAGE_SIZE-
A synonym for PAGESIZE/_SC_PAGESIZE. (Both PAGESIZE and
PAGE_SIZE are specified in POSIX.)
- RE_DUP_MAX - _SC_RE_DUP_MAX
-
regexec(3) と regcomp(3) で許容されている BRE (Basic Regular Expression;
基本正規表現) の繰り返し出現回数の最大値。 _POSIX2_RE_DUP_MAX (255) 未満であってはならない。
- STREAM_MAX - _SC_STREAM_MAX
-
一つのプロセスが同時にオープンできるストリーム数の上限。 定義されていた場合には、この値は標準 C マクロの FOPEN_MAX と同じである。
_POSIX_STREAM_MAX (8) 未満であってはならない。
- SYMLOOP_MAX - _SC_SYMLOOP_MAX
-
パス名の解決時に現れてもよいシンボリックリンクの最大数。 この数を超えると、パス名解決時に ELOOP が返される。
_POSIX_SYMLOOP_MAX (8) 未満であってはならない。
- TTY_NAME_MAX - _SC_TTY_NAME_MAX
-
端末デバイス名の最大長。長さには末尾のヌルバイトも含まれる。 _POSIX_TTY_NAME_MAX (9) 未満であってはならない。
- TZNAME_MAX - _SC_TZNAME_MAX
-
タイムゾーン名として使えるバイト数の最大値。 _POSIX_TZNAME_MAX (6) 未満であってはならない。
- _POSIX_VERSION - _SC_VERSION
-
POSIX.1 標準が承認された年月。 YYYYMML という書式である。 199009L という値は、1990年 9月
改訂であることを示す。
POSIX.2 変数
次に、POSIX.2 の値を示す。 これらは各ユーティリティに対する制限を指定する。
- BC_BASE_MAX - _SC_BC_BASE_MAX
-
bc(1) ユーティリティで許容される obase の最大値。
- BC_DIM_MAX - _SC_BC_DIM_MAX
-
bc(1) で許容される一つの配列中の要素数の最大値。
- BC_SCALE_MAX - _SC_BC_SCALE_MAX
-
bc(1) で許される scale の最大値。
- BC_STRING_MAX - _SC_BC_STRING_MAX
-
bc(1) で許容される文字列の最大長。
- COLL_WEIGHTS_MAX - _SC_COLL_WEIGHTS_MAX
-
ロケール定義ファイル中の LC_COLLATE order キーワードのエントリーに割り当て可能な重みの最大値。
- EXPR_NEST_MAX - _SC_EXPR_NEST_MAX
-
expr(1) において、括弧で入れ子にできる式の最大数。
- LINE_MAX - _SC_LINE_MAX
-
ユーティリティの入力行の最大長。標準入力だけでなく、ファイルからの入力にも 適用される。長さには行の末尾の改行文字も含まれる。
- RE_DUP_MAX - _SC_RE_DUP_MAX
-
正規表現で区間表記 (interval notation) \{m,n\} が使用されたときに許容される繰り返し出現回数の最大値。
- POSIX2_VERSION - _SC_2_VERSION
-
POSIX.2 標準のバージョン。YYYYMML という書式で表記される。
- POSIX2_C_DEV - _SC_2_C_DEV
-
POSIX.2 の C 言語開発機能がサポートされているかを示す。
- POSIX2_FORT_DEV - _SC_2_FORT_DEV
-
POSIX.2 の FORTRAN 開発ユーティリティがサポートされているかを示す。
- POSIX2_FORT_RUN - _SC_2_FORT_RUN
-
POSIX.2 の FORTRAN ランタイムユーティリティがサポートされているかを示す。
- _POSIX2_LOCALEDEF - _SC_2_LOCALEDEF
-
localedef(1) を使った、POSIX.2 のロケールの作成をサポートしているかを示す。
- POSIX2_SW_DEV - _SC_2_SW_DEV
-
POSIX.2 ソフトウェア開発ユーティリティオプションがサポートされているかを示す。
以下の値も存在するが、標準には含まれていない。
- _SC_PHYS_PAGES-
物理メモリーのページ数。 この値と _SC_PAGESIZE 値の積は桁溢れする可能性があるので注意すること。
- _SC_AVPHYS_PAGES-
現在利用可能な物理メモリーのページ数。
- _SC_NPROCESSORS_CONF-
設定されたプロセッサ数。 get_nprocs_conf(3) も参照。
- _SC_NPROCESSORS_ONLN-
現在オンラインの (利用可能な) プロセッサ数。 get_nprocs_conf(3) も参照。
返り値
The return value of sysconf() is one of the following:
- *
-
On error, -1 is returned and errno is set to indicate the cause of the
error (for example, EINVAL, indicating that name is invalid).
- *
-
If name corresponds to a maximum or minimum limit, and that limit is
indeterminate, -1 is returned and errno is not changed. (To distinguish
an indeterminate limit from an error, set errno to zero before the call,
and then check whether errno is nonzero when -1 is returned.)
- *
-
If name corresponds to an option, a positive value is returned if the
option is supported, and -1 is returned if the option is not supported.
- *
-
Otherwise, the current value of the option or limit is returned. This value
will not be more restrictive than the corresponding value that was described
to the application in <unistd.h> or <limits.h> when
the application was compiled.
エラー
- EINVAL
-
name が無効である。
属性
この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース | 属性 | 値
|
sysconf()
| Thread safety | MT-Safe env
|
準拠
POSIX.1-2001, POSIX.1-2008.
バグ
ARG_MAX を使うのは難しい、なぜなら、 exec(3) の引数領域 (argument space) のうちどれくらいが
ユーザーの環境変数によって使われるかは分からないからである。
いくつかの返り値はとても大きくなることがある。これらを使って メモリーの割り当てを行うのは適当ではない。
関連項目
bc(1), expr(1), getconf(1), locale(1), confstr(3),
fpathconf(3), pathconf(3), posixoptions(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/ に書かれている。
Index
- 名前
-
- 書式
-
- 説明
-
- POSIX.1 変数
-
- POSIX.2 変数
-
- 返り値
-
- エラー
-
- 属性
-
- 準拠
-
- バグ
-
- 関連項目
-
- この文書について
-
This document was created by
man2html,
using the manual pages.
Time: 16:46:43 GMT, November 24, 2023