PATHCONF(2)

名称
pathconf, fpathconf - 構成可能なパス名変数を取得する

ライブラリ
libc

書式
<unistd.h> long pathconf(const char *path, int name) long fpathconf(int fd, int name)

解説
pathconf() システムコールと fpathconf() システムコールは、構成可能なシステム限界の現在値、またはパス名や ファイル記述子に対応するオプション変数を アプリケーションが判定する方法を提供します。

pathconf() の場合、 path 引数はファイルまたはディレクトリの名前です。 fpathconf() の場合、 fd 引数はオープンファイルの記述子です。 name 引数は、照会するシステム変数を指定します。 それぞれの名前に関するシンボリック定数はインクルードファイル <unistd.h> にあります。

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

_PC_LINK_MAX
    最大のファイルリンクカウント。

_PC_MAX_CANON
    端末の標準モード入力待ち行列の最大バイト数。

_PC_MAX_INPUT
    端末入力待ち行列内空間で利用できる最大バイト数の最小値。

_PC_NAME_MAX
    ファイル名の最大バイト数。

_PC_PATH_MAX
    パス名の最大バイト数。

_PC_PIPE_BUF
    パイプに不可分に書き込まれる最大バイト数。

_PC_CHOWN_RESTRICTED
    chown(2) システムコールを実行するのに、適切な特権が必要な場合は 1 を返し、 そうでない場合は 0 を返します。 全ての場合において p1003.1-2001 は適切な特権を要求しますが、この動作はこの規格の前の版ではオプションでした。

_PC_NO_TRUNC
    構成要素が {NAME_MAX} よりも長いパス名を使用しようとすると [ENAMETOOLONG] エラーを引き起こす場合は、0 より大きい値を返します。 そうでない場合には、このような構成要素は {NAME_MAX} に切り詰められます。 全ての場合において p1003.1-2001 は適切なエラーを要求しますが、この動作はこの規格の前の版ではオプションでした。 また、 POSIX に縛られていないファイルシステムはこの動作をサポートしません。

_PC_VDISABLE
    端末制御文字を無効にするための値を返します。

_PC_ASYNC_IO
    非同期 I/O がサポートされている場合は 1 を返し、 そうでなければ 0 を返します。

_PC_PRIO_IO
    このファイルに対して優先 I/O がサポートされている場合は 1 を返し、 そうでなければ 0 を返します。

_PC_SYNC_IO
    このファイルに対して同期 I/O がサポートされている場合は 1 を返し、 そうでなければ 0 を返します。

_PC_ALLOC_SIZE_MIN
    ファイルの一部を格納するために確保される領域の最小バイト数。

_PC_FILESIZEBITS
    最大ファイルサイズを表現するのに必要なビット数。

_PC_REC_INCR_XFER_SIZE
    ファイル転送サイズの、 _PC_REC_MIN_XFER_SIZE から _PC_REC_MAX_XFER_SIZE への推奨増加量。

_PC_REC_MAX_XFER_SIZE
    推奨ファイル転送サイズの最大値。

_PC_REC_MIN_XFER_SIZE
    推奨ファイル転送サイズの最小値。

_PC_REC_XFER_ALIGN
    ファイル転送バッファの推奨アラインメント。

_PC_SYMLINK_MAX
    シンボリックリンクに使われる最大バイト数。

_PC_ACL_EXTENDED
    指定されたファイルに対してアクセス制御リスト (ACL) が 設定できる場合は 1 を返し、そうでなければ 0 を返します。

_PC_ACL_PATH_MAX
    ACL エントリのファイル毎の最大数。

_PC_CAP_PRESENT
    指定されたファイルに対してケーパビリティ状態が 設定できる場合は 1 を返し、そうでなければ 0 を返します。

_PC_INF_PRESENT
    指定されたファイルに対して情報ラベルが 設定できる場合は 1 を返し、そうでなければ 0 を返します。

_PC_MAC_PRESENT
    指定されたファイルに対して強制アクセス制御 (MAC) ラベルが 設定できる場合は 1 を返し、そうでなければ 0 を返します。

戻り値
pathconf() または fpathconf() の呼び出しが正常に完了しない場合は -1 が返され、 errno が適切な値に設定されます。 変数に結び付けられた機能がシステム内に限界を持たないとき、-1 が返され、 errno は修正されません。 それ以外の場合、現在の変数値が返されます。

エラー
次の条件のどれかが起きた場合、 pathconf() システムコールと fpathconf() システムコールは -1 を返し、 errno に対応する値を設定します。

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

[EINVAL]
    このファイルとこの変数との結び付きは、実装されていません。

pathconf() システムコールは次の場合に失敗します:

[ENOTDIR]
    パスの構成要素中にディレクトリ以外のものが含まれています。

[ENAMETOOLONG]
    パス名の構成要素が {NAME_MAX} の文字数を越えているか (ただし上記の _PC_NO_TRUNC を参照)、またはパス名全体が {PATH_MAX} の文字数を越えています。

[ENOENT]
    指定されたファイルが存在しません。

[EACCES]
    指定されたパスには、検索が許可されていないディレクトリが含まれています。

[ELOOP]
    パス名を変換するときに検出されたシンボリックリンクが多すぎます。

[EIO]
    ファイルシステムに読み書きしている間に入出力エラーが発生しました。

fpathconf() システムコールは次の場合に失敗します:

[EBADF]
    fd 引数が有効なオープンファイル記述子ではありません。

[EIO]
    ファイルシステムに読み書きしている間に入出力エラーが発生しました。

関連項目
sysctl(3)

歴史
pathconf() システムコールと fpathconf() システムコールは 4.4BSD ではじめて登場しました。