SYSCONF(3) | Linux Programmer's Manual | SYSCONF(3) |
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 を指定する。
変数名、その値を取得するのに使われる sysconf() のパラメーター名、簡単な説明を以下に示す。
まず POSIX.1 互換の変数を示す。
次に、POSIX.2 の値を示す。 これらは各ユーティリティに対する制限を指定する。
以下の値も存在するが、標準には含まれていない。
name が不正な場合、-1 が返され、 errno に EINVAL が設定される。 それ以外の場合、システムリソースの値が返り値として返され、 errno は変更されない。問い合わせがオプションに関するものであれば、 そのオプションが利用できる場合には正の値が返され、 利用できない場合には -1 が返される。 問い合わせが制限に関するものであれば、その制限が設定されていない場合に -1 が返される。
POSIX.1-2001.
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 プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2014-12-31 | GNU |