EN JA
PATHCONF(2)
PATHCONF(2) FreeBSD System Calls Manual PATHCONF(2)

名称

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

ライブラリ

Standard C Library (libc, -lc)

書式

#include < unistd.h>

long
pathconf( const char *path, int name);

long
lpathconf( const char *path, int name);

long
fpathconf( int fd, int name);

解説

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

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

lpathconf() システムコールは、指定されたファイルがシンボリックリンクである場合を除いて、 pathconf() に似ています、シンボリックリンクの場合、 lpathconf() は、リンクの情報を返し、一方、 pathconf() は、リンクを参照するファイルの情報を返します。

利用可能な値は、次の通りです:

_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 を返します。全ての場合において IEEE Std 1003.1-2001 (“POSIX.1”) は、適切な特権を要求しますが、この動作は、この規格の前の版ではオプションでした。
_PC_NO_TRUNC
構成要素が{ NAME_MAX}よりも長いパス名を使用しようとすると[ ENAMETOOLONG]エラーを引き起こす場合は、0 より大きい値を返します。そうでない場合には、このような構成要素は、{ NAME_MAX}に切り詰められます。全ての場合において IEEE Std 1003.1-2001 (“POSIX.1”) は、適切なエラーを要求しますが、この動作は、この規格の前の版ではオプションでした。また、 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_NFS4
指定されたファイルで NFSv4 ACL を設定することができるなら、1 を返し、そうでなければ、0 を返します。
_PC_ACL_PATH_MAX
ACL エントリのファイル毎の最大数。
_PC_CAP_PRESENT
指定されたファイルに対してケーパビリティ状態が設定できる場合は、1 を返し、そうでなければ 0 を返します。
_PC_INF_PRESENT
指定されたファイルに対して情報ラベルが設定できる場合は、1 を返し、そうでなければ 0 を返します。
_PC_MAC_PRESENT
指定されたファイルに対して強制アクセス制御 (MAC) ラベルが設定できる場合は、1 を返し、そうでなければ 0 を返します。
_PC_MIN_HOLE_SIZE
ファイルシステムがホールの報告 ( lseek(2) 参照) をサポートするなら、 pathconf() と fpathconf() は、返された最小のホールのサイズを表す正の数をバイト単位で返します。返されたホールのオフセットは、この同じ値に整列されます。ファイルシステムが最小のホールのサイズを指定しないが、まだホールを報告する、特別な 1 の値が返されます。

戻り値

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]
ファイルシステムに読み書きしている間に入出力エラーが発生しました。

関連項目

lseek(2), sysctl(3)

歴史

pathconf() と fpathconf() システムコールは、 4.4BSD ではじめて登場しました。 lpathconf() システムコールは、 FreeBSD 8.0 ではじめて登場しました。
July 7, 2009 FreeBSD