sysconf() - システム構成オプションの判別

標準

標準/拡張機能 C/C++ 依存項目

POSIX.1
XPG4
XPG4.2
Single UNIX Specification、バージョン 2
Single UNIX Specification、バージョン 3

両方  

形式

#define _POSIX_SOURCE
#include <unistd.h>

long sysconf(int name);

機能説明

構成可能なシステム・オプションの値を判別します。
int name

取得するシステム構成オプションを指定します。name に指定できる値は、unistd.h ヘッダー・ファイルに定義されたシンボルの次のセットのいずれか 1 つ であり、各シンボルが 1 つのシステム構成オプションに対応しています。

以下は _POSIX_SOURCE が定義されているときに使用可能です。

_SC_ARG_MAX
exec 関数で渡すことができる 引数の最大バイト数および環境データ である ARG_MAX を (sysconf() で戻された値によって定義され たように) 表示します。
_SC_CHILD_MAX
実ユーザー ID (UID) で同時に実行することができるプロセス の最大数 CHILD_MAX を (sysconf() で戻された値で 定義されたように) 表示します。
_SC_CLK_TCK
time.h ヘッダー・ファイルで定義された CLK_TCK マクロを 表します。クロック・チックの数は秒数です。
_SC_JOB_CONTROL
unistd.h ヘッダー・ファイルで定義 できる _POSIX_JOB_CONTROL マクロを表します。これで、一定のジョブ制御操作は、オペレーティング・システムのこの バージョンによってインプリメントされることが示されます。_POSIX_JOB_CONTROL が定義されると、各種の関数 (例えば 、setpgid()) は、マクロが定義されないときより多くの機能 をもちます。
_SC_NGROUPS_MAX
プロセスと関連付けることができる補足グループ ID (GID) の 最大数である NGROUPS_MAX を (sysconf() で戻された値によって 定義されたように) 表示します。
_SC_OPEN_MAX
単一プロセスが一度にオープンできるファイルの最大数 である OPEN_MAX を (sysconf() で戻された値によって 定義されたように) 表示します。
_SC_SAVED_IDS
_POSIX_SAVED_IDS マクロを表します。unistd.h ヘッダー・ファイルで定義されることがあり、この POSIX インプリメンテーション に保管セット UID および保管セット GID があることを示します。 このシンボルは、setuid() や setgid() などの関数の動作に影響を与えます。
_SC_STREAM_MAX
_STREAM_MAX マクロを表します。unistd.h ヘッダー・ファイルで定義されることがあり、プロセスで一度に オープンできるストリームの最大数を示します。
_SC_THREADS_MAX_NP
呼び出し元のプロセスの実行中スレッド、キューに入れられるスレッド、お よび終了済みの切り離されていないスレッドを含む、pthread_create() で 処理される並行スレッド の最大数である THREAD_MAX マクロを (sysconf() で戻された値 によって定義されたように) 表示します。
_SC_THREAD_TASKS_MAX_NP
呼び出し元のプロセス内の pthread_create() により処理されるスレッドで、同時に使用中の MVS™ タスクの最大数である THREAD_TASKS_MAX マクロ を (sysconf() で戻された値で定義されたように) 表示します。
_SC_TTY_GROUP
TTYGROUP() 初期設定パラメーターと関連したグループ番号を検索します。
_SC_TZNAME_MAX
_TZNAME_MAX マクロを表します。unistd.h ヘッダー・ファイルで定義されることがあり、時間帯名の最大長 を示します。
_SC_VERSION
_POSIX_VERSION マクロを表します。unistd.h ヘッダー・ファイルで定義され、システムで標準化 される POSIX.1 標準のバージョンを示します。

さらに _POSIX_SOURCE で公開されたシンボルに加え、_XOPEN_SOURCE が定義されると以下が可視になります。

_SC_XOPEN_CRYPT
_XOPEN_CRYPT を表し、インプリメンテーションが X/Open Encryption Option Group をサポートします。
_SC_XOPEN_VERSION
_XOPEN_VERSION を表し、インプリメンテーションが準拠する X/Open Portability Guide のバージョンを示す整数値です。
_SC_PASS_MAX

sysconf() によって戻される値で定義されるように、PASS_MAX を表します。 これは、パスワード、パスチケット、またはパスワード・フレーズに許容される最大 バイト数です。

注:

これは Single UNIX Specification、バージョン 2 のレガシー機能でしたが、 既に廃止され、Single UNIX Specification、バージョン 3 の一部として サポートされていません。

Single UNIX Specification、バージョン 3 のために 書かれたアプリケーションで、この関数を引き続き使う必要がある場合は、 標準システム・ヘッダーを組み込む前に、フィーチャー・テスト・マクロ _UNIX03_WITHDRAWN を 定義してください。マクロは、Single UNIX Specification、バージョン 3 に移動された すべてのインターフェースおよびシンボルを公開します。

さらに _XOPEN_SOURCE で公開されたシンボルに加え、_XOPEN_SOURCE_EXTENDED が 1 に定義されると以下が可視になります。

_SC_PAGE_SIZE
現行のページ・サイズ (バイト単位) を戻します。
_SC_PAGESIZE
現行のページ・サイズ (バイト単位) を戻します。

さらに _POSIX_SOURCE で公開されたシンボルに加え、_POSIX_C_SOURCE が 2 に定義されると以下が可視になります。

_SC_2_C_BIND
_POSIX2_C_BIND を表し、インプリメンテーションが C 言語バインディング・オプションをサポートします。
_SC_2_C_DEV
_POSIX2_C_DEV を表し、インプリメンテーションが C 言語開発ユーティリティー・オプションをサポートします。
_SC_2_LOCALEDEF
_POSIX2_LOCALEDEF を表し、インプリメンテーションが localedef ユーティリティーを使用したロケールの作成をサポートします。
_SC_2_UPE
_POSIX2_UPE を表し、インプリメンテーションがユーザー移植性ユーティリティー・オプションをサポートします。.
_SC_2_VERSION
_POSIX2_VERSION を表し、インプリメンテーションが準拠するシェルおよびユーティリティーのバージョンを示す整数値です。

さらに 2 に定義された _POSIX_C_SOURCE で公開されたシンボルに加え、_POSIX_C_SOURCE が 200112L に定義されると以下が可視になります。

_SC_HOST_NAME_MAX
HOST_NAME_MAX を表し、gethostname() 関数から戻されたホスト名の最大長 (終端ヌルは含まない) です。
_SC_IPV6
_POSIX_IPV6 を表し、インプリメンテーションが IPv6 オプションをサポートします。
_SC_LOGIN_NAME_MAX
LOGIN_NAME_MAX を表し、ログイン名の最大長です。
_SC_READER_WRITER_LOCKS
_POSIX_READER_WRITER_LOCKS を表し、インプリメンテーションが読み取り/書き込みロック・オプションをサポートします。スレッド・オプションがサポートされている場合、これは常にゼロよりも大きい値に設定されます。
_SC_REGEXP
_POSIX_REGEXP を表し、インプリメンテーションが正規表現処理オプションをサポートします。
_SC_SHELL
_POSIX_SHELL を表し、インプリメンテーションが POSIX シェルをサポートします。
_SC_SYMLOOP_MAX
SYMLOOP_MAX を表し、ループすることのないパス名の解決で、信頼して全探索できるシンボリック・リンクの最大数。
_SC_THREAD_ATTR_STACKSIZE
_POSIX_THREAD_ATTR_STACKSIZE を表し、インプリメンテーションがスレッド・スタック・サイズ属性オプションをサポートします。
_SC_THREAD_KEYS_MAX
PTHREAD_KEYS_MAX を表し、プロセスで作成可能なデータ・キーの最大数です。
_SC_THREAD_PROCESS_SHARED
_POSIX_THREAD_PROCESS_SHARED を表し、インプリメンテーションがスレッド・プロセス共用同期オプションをサポートします。
_SC_THREAD_SAFE_FUNCTIONS
_POSIX_THREAD_SAFE_FUNCTIONS を表し、インプリメンテーションがスレッド・セーフ関数オプションをサポートします。
_SC_THREAD_STACK_MIN
PTHREAD_STACK_MIN を表し、スレッド・スタック・ストレージの最小サイズ (バイト) です。
_SC_THREAD_THREADS_MAX
PTHREAD_THREADS_MAX を表し、プロセスごとに作成可能なスレッドの最大数です。
_SC_THREADS
_POSIX_THREADS を表し、インプリメンテーションがスレッド・オプションをサポートします。
_SC_TTY_NAME_MAX
TTY_NAME_MAX を表し、端末装置名の最大長です。
_SC_V6_ILP32_OFF32
_POSIX_V6_ILP32_OFF32 を表し、インプリメンテーションが、32 ビット int 型、long 型、ポインター型、および off_t 型の C 言語コンパイル環境を提供します。
_SC_V6_ILP32_OFFBIG
_POSIX_V6_ILP32_OFFBIG を表し、インプリメンテーションが、32 ビット int 型、long 型、ポインター型、および少なくとも 64 ビットを使用した off_t 型の C 言語コンパイル環境を提供します。
_SC_V6_LP64_OFF64
_POSIX_V6_LP64_OFF64 を表し、インプリメンテーションが、32 ビット int 型、および 64 ビット long 型、ポインター型、および off_t 型の C 言語コンパイル環境を提供します。
_SC_V6_LPBIG_OFFBIG
_POSIX_V6_LPBIG_OFFBIG を表し、インプリメンテーションが、少なくとも 32 ビットを使用した int 型、および少なくとも 64 ビットを使用した long 型、ポインター型、および off_t 型の C 言語コンパイル環境を提供します。
_SC_XOPEN_LEGACY
_XOPEN_LEGACY を表し、インプリメンテーションがレガシー・オプション・グループをサポートします。

以下のシンボルは、_XOPEN_SOURCE 500 で使用可能です。

_SC_GETPW_R_SIZE_MAX
getpwuid_r() および getpwnam_r() データ・バッファーの最大サイズ
_SC_GETGR_R_SIZE_MAX
getgrgid_r() および getgrnam_r() データ・バッファーの最大サイズ

戻り値

正常に実行された場合、sysconf() は、指定オプションと関連した値を戻します。

name に対応する変数が存在するが、システムでサポート されない場合には、sysconf() は -1 を戻しますが、errno の値は変更されません。その他の原因で sysconf() が失敗した場合は、-1 が戻されます。

正常に実行されなかった場合、sysconf() は errno を次のいずれかの 値に設定します。
エラー・コード
説明
EINVAL
引数 name の指定した値は、誤りです。

CELEBS61
⁄* CELEBS61

   This example determines the value of ARG_MAX.

 *⁄
#define _POSIX_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <errno.h>

main() {
  long result;

  errno = 0;
  puts("examining ARG_MAX limit");
  if ((result = sysconf(_SC_ARG_MAX)) == -1)
    if (errno == 0)
      puts("ARG_MAX is not supported.");
    else perror("sysconf() error");
  else
    printf("ARG_MAX is %ld¥n", result);
}
出力:
examining ARG_MAX limit
ARG_MAX is 1048576

関連情報