Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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/ に書かれている。