CONFSTR(3)

名称
confstr - 文字列値の設定可能変数を得る

ライブラリ
libc

書式
<unistd.h> size_t confstr(int name, char *buf, size_t len)

解説
このインタフェースは、 sysctl(3) によって旧式になっています。

confstr() 関数は、システム構成により定義されている文字列値を、 アプリケーションが取得するための方式を提供します。

name 引数は、照会されるシステム変数を指定します。 各名前の値となるシンボリック定数は、インクルードファイル <unistd.h> の中にあります。 len 引数は、引数 buf が参照するバッファのサイズを指定します。 len が 0 でない場合、 buf は NULL ではないポインタで、 name は値を持っており、その値のうち最高 len - 1 バイトがバッファ buf にコピーされます。 コピーされた値の末尾は必ずヌル文字です。

利用可能な値は次のとおりです。

_CS_PATH
    全標準ユーティリティを検出する PATH 環境変数の値を返します。

戻り値
confstr() の呼び出しが正常に完了しない場合、-1 が返され、該当する errno が設定されます。 また変数に、システム構成により定義されている値がない場合 0 が返され、 errno は変更されません。 それ以外の場合は、設定定義された 値全体を入れるのに必要なバッファサイズが返されます。 このサイズが引数 len より大きい場合、 buf 内の文字列は切り捨てられています。

エラー
confstr() 関数がエラーになると、ライブラリ関数 malloc(3) と sysctl(3) で規定されているエラーを errno に設定することがあります。

さらに、次のエラーがレポートされることがあります。

[EINVAL]
    name 引数の値は無効です。

関連項目
sysctl(3)

歴史
confstr() 関数は 4.4BSD ではじめて登場しました。