Manpages

名 前

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 を 返 し 、 errnoEINVAL を 設 定 す る 。

エ ラ ー

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