HP OpenVMS HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)
文字列値によって定義されるシステム変数の現在の値を返します。
形式
#include <unistd.h>
size_t confstr (int name, char *buf, size_t len);
引数 |  |
nameシステム変数の設定。name 引数に対して指定できる値は,
<unistd.h>ヘッダ・ファイルに定義されている _CS_X 名です。
buf
confstr関数が name の値をコピーする先のバッファを指すポインタ。
len
name の値が格納されるバッファのサイズ。
説明
confstr関数を使用すると,アプリケーションは文字列値によって定義される特定のシステム・パラメータ,リミット,オプションの現在の設定を判断することができます。この関数は主に,アプリケーションで
PATH環境変数のシステム・デフォルト値を判断するために使用されます。
次の条件が満たされる場合は,
confstr関数は値を buf によって示される len バイトのバッファにコピーします。
- len 引数が 0 でない。
- name 引数にシステムで定義されている値が指定されている。
- buf 引数が NULL ポインタでない。
返された文字列が末尾のヌルも含めて
len バイトより長い場合は,
confstr関数は文字列を len - 1 バイトに切り捨て,結果の末尾にヌルを追加します。アプリケーションは,
confstr関数から返された値を, len 引数の値と比較することにより,文字列が切り捨てられたことを検出できます。
<limits.h>ヘッダ・ファイルには,システムで定義されているリミットが格納されています。
<unistd.h>ヘッダ・ファイルには,システム定義環境変数が格納されています。
例
name の文字列値を格納するのに必要なバッファのサイズを判断するには,次のように入力します。
confstr(_CS_PATH, NULL, (size_t) 0)
|
confstr関数は必要なバッファのサイズを返します。
戻り値 |  |
0
|
エラーを示します。指定された
name の値に応じて,次のいずれかになります。
- 不正な場合,
errno
は EINVAL に設定されます。
- システム定義値がない場合,
errno
は設定されません。
|
n
|
値を格納するのに必要なバッファのサイズ。
-
name 引数の値がシステム定義値の場合は,
confstr
は値全体を格納するのに必要なバッファのサイズを返します。この戻り値が
len の値より大きい場合は,
buf の値として返された文字列は切り捨てられます。
-
len 引数の値が 0 に設定されている場合や,
buf の値が NULL の場合は,
confstr
はシステム定義値全体を格納するのに必要なバッファのサイズを返します。文字列の値はコピーされません。
|
|