CONFSTR(3)

名前
confstr - コンフィグレーションに依存した文字列変数の取得

書式
#define __USE_POSIX_2
#include <unistd.h>

size_t confstr(int name, char *buf, size_t len);

説明
confstr() はコンフィグレーションに依存した文字列変数の値を取得する。

引数 name は問い合わせのためのシステム変数である。 次の変数がサポートされている。

_CS_PATH
    すべてのPOSIX.2標準ユーティリティがみつかるような PATH の値。

buf が NULL でなく、かつ len が0でなければ confstr() は取得した文字列の内容を buf にコピーする。必要ならば長さは len - 1 文字に切り捨てられてヌル文字で終端される。 これは confstr() の返り値を len を比較して判定できる。

もし len が0で buf が NULL ならば confstr() は上で定義された値(訳注: 切り捨てる前の、取得した文字列の長さ)を返す。

返り値
もし name が正しいコンフィグレーション変数に対応していなければ、 confstr() は0を返す。

例
次の部分的なコードはPOSIX.2システムのユーティリティがあるパス を決定する。
char *pathbuf; size_t n;
n = confstr(_CS_PATH,NULL,(size_t)0);
if ((pathbuf = malloc(n)) == NULL) abort();
confstr(_CS_PATH, pathbuf, n);

エラー
もし name の値が不正であったならば、 errno が EINVAL にセットされる。

CONFORMS TO
POSIX.2で提案された。

バグ
POSIX.2はまだ承認された標準にはなっていないので、 このマニュアルの内容は変更されるであろう。

関連項目
sh(1), exec(3), system(3)