名 前
confstr − コ ン フ ィ グ レ ー シ ョ ン に 依 存 し た 文 字 列 変 数 の 取 得
書 式
#include <unistd.h>
size_t confstr(int name, char *buf, size_t len);
glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):
confstr(): _POSIX_C_SOURCE >= 2 || _XOPEN_SOURCE
説 明
confstr()
は コ ン フ ィ グ
レ ー シ ョ ン に
依 存 し た 文 字
列 変 数 の 値 を
取 得 す る 。 引
き 数 name は 、 問
い 合 わ せ 内 容
を 表 す シ ス テ
ム 変 数 で あ る
。 以 下 の 変 数
が サ ポ ー ト さ
れ て い る 。
_CS_GNU_LIBC_VERSION (GNU C library 限 定 ;
glibc 2.3.2 以 降 ) そ の シ
ス テ ム の GNU C ラ イ
ブ ラ リ の バ ー
ジ ョ ン を 示 す
文 字 列 (例 え ば
"glibc 2.3.4")。
_CS_GNU_LIBPTHREAD_VERSION (GNU C library 限
定 ; glibc 2.3.2 以 降 ) そ の
C ラ イ ブ ラ リ が
提 供 し て い る POSIX
実 装 を 示 す 文
字 列 (例 え ば "NPTL
2.3.4" や
"linuxthreads−0.10")。
_CS_PATH す べ て の POSIX.2
標 準 ユ ー テ ィ
リ テ ィ が 見 つ
か る よ う な PATH
の 値 。
buf が NULL で な く 、 か つ len が 0 で な け れ ば confstr() は 取 得 し た 文 字 列 の 内 容 を buf に コ ピ ー す る 。 必 要 な ら ば 長 さ が len − 1 バ イ ト に 切 り 捨 て ら れ て 、 NULL バ イ ト ('\0') で 終 端 さ れ る 。 末 尾 が 切 り 捨 て ら れ た か ど う か を 判 定 す る に は 、 confstr() の 返 り 値 を len と 比 較 す れ ば よ い 。
len が 0 で buf が NULL な ら ば 、 confstr() は 以 下 で 定 義 さ れ た 値 (訳 注 : 切 り 捨 て る 前 の 、 取 得 し た 文 字 列 の 長 さ ) を 返 す 。
返 り 値
name が 有 効 な コ ン フ ィ ギ ュ レ ー シ ョ ン 変 数 の 場 合 、 confstr() は そ の 変 数 の 値 全 体 を 保 持 す る の に 必 要 で あ っ た バ イ ト 数 を 返 す (文 字 列 終 端 の ヌ ル バ イ ト も 含 む )。 こ の 値 は len よ り 大 き い こ と も あ る 。 こ の 場 合 に は 、 buf に 格 納 さ れ た 値 の 末 尾 が 切 り 詰 め ら れ た こ と を 意 味 す る 。
name が 有 効 な コ ン フ ィ ギ ュ レ ー シ ョ ン 変 数 だ が 、 変 数 が 値 を 持 っ て い な い 場 合 、 confstr() は 0 を 返 す 。 name が 有 効 な コ ン フ ィ グ レ ー シ ョ ン 変 数 に 対 応 し て い な け れ ば 、 confstr() は 0 を 返 し 、 errno に EINVAL を 設 定 す る 。
エ ラ ー
EINVAL |
name の 値 が 不 正 で あ る 。 |
準 拠
POSIX.1−2001.
例
次 の 部 分 的 な コ ー ド は 、 POSIX.2 シ ス テ ム の ユ ー テ ィ リ テ ィ が あ る パ ス を 取 得 す る も の で あ る 。
char *pathbuf;
size_t n;
n =
confstr(_CS_PATH, NULL, (size_t) 0);
pathbuf = malloc(n);
if (pathbuf == NULL)
abort();
confstr(_CS_PATH, pathbuf, n);
関 連 項 目
getconf(1), sh(1), exec(3), fpathconf(3) sysconf(3) pathconf(3) system(3)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。