.\" Copyright (c) 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)pathconf.2 8.1 (Berkeley) 6/4/93 .\" %FreeBSD: src/lib/libc/sys/pathconf.2,v 1.17.2.1 2005/02/28 03:32:34 brueffer Exp % .\" .\" $FreeBSD$ .Dd November 4, 2002 .Dt PATHCONF 2 .Os .Sh 名称 .Nm pathconf , .Nm fpathconf .Nd 構成可能なパス名変数を取得する .Sh ライブラリ .Lb libc .Sh 書式 .In unistd.h .Ft long .Fn pathconf "const char *path" "int name" .Ft long .Fn fpathconf "int fd" "int name" .Sh 解説 .Fn pathconf システムコールと .Fn fpathconf システムコールは、構成可能なシステム限界の現在値、またはパス名や ファイル記述子に対応するオプション変数を アプリケーションが判定する方法を提供します。 .Pp .Fn pathconf の場合、 .Fa path 引数はファイルまたはディレクトリの名前です。 .Fn fpathconf の場合、 .Fa fd 引数はオープンファイルの記述子です。 .Fa name 引数は、照会するシステム変数を指定します。 それぞれの名前に関するシンボリック定数はインクルードファイル .Li にあります。 .Pp 利用可能な値は次のとおりです: .Pp .Bl -tag -width 6n .Pp .It Li _PC_LINK_MAX 最大のファイルリンクカウント。 .It Li _PC_MAX_CANON 端末の標準モード入力待ち行列の最大バイト数。 .It Li _PC_MAX_INPUT 端末入力待ち行列内空間で利用できる最大バイト数の最小値。 .It Li _PC_NAME_MAX ファイル名の最大バイト数。 .It Li _PC_PATH_MAX パス名の最大バイト数。 .It Li _PC_PIPE_BUF パイプに不可分に書き込まれる最大バイト数。 .It Li _PC_CHOWN_RESTRICTED .Xr chown 2 システムコールを実行するのに、適切な特権が必要な場合は 1 を返し、 そうでない場合は 0 を返します。 全ての場合において .St -p1003.1-2001 は適切な特権を要求しますが、この動作はこの規格の前の版ではオプションでした。 .It Li _PC_NO_TRUNC 構成要素が .Brq Dv NAME_MAX よりも長いパス名を使用しようとすると .Bq Er ENAMETOOLONG エラーを引き起こす場合は、0 より大きい値を返します。 そうでない場合には、このような構成要素は .Brq Dv NAME_MAX に切り詰められます。 全ての場合において .St -p1003.1-2001 は適切なエラーを要求しますが、この動作はこの規格の前の版ではオプションでした。 また、 .Tn POSIX に縛られていないファイルシステムはこの動作をサポートしません。 .It Li _PC_VDISABLE 端末制御文字を無効にするための値を返します。 .It Li _PC_ASYNC_IO 非同期 I/O がサポートされている場合は 1 を返し、 そうでなければ 0 を返します。 .It Li _PC_PRIO_IO このファイルに対して優先 I/O がサポートされている場合は 1 を返し、 そうでなければ 0 を返します。 .It Li _PC_SYNC_IO このファイルに対して同期 I/O がサポートされている場合は 1 を返し、 そうでなければ 0 を返します。 .It Li _PC_ALLOC_SIZE_MIN ファイルの一部を格納するために確保される領域の最小バイト数。 .It Li _PC_FILESIZEBITS 最大ファイルサイズを表現するのに必要なビット数。 .It Li _PC_REC_INCR_XFER_SIZE ファイル転送サイズの、 .Dv _PC_REC_MIN_XFER_SIZE から .Dv _PC_REC_MAX_XFER_SIZE への推奨増加量。 .It Li _PC_REC_MAX_XFER_SIZE 推奨ファイル転送サイズの最大値。 .It Li _PC_REC_MIN_XFER_SIZE 推奨ファイル転送サイズの最小値。 .It Li _PC_REC_XFER_ALIGN ファイル転送バッファの推奨アラインメント。 .It Li _PC_SYMLINK_MAX シンボリックリンクに使われる最大バイト数。 .It Li _PC_ACL_EXTENDED 指定されたファイルに対してアクセス制御リスト (ACL) が 設定できる場合は 1 を返し、そうでなければ 0 を返します。 .It Li _PC_ACL_PATH_MAX ACL エントリのファイル毎の最大数。 .It Li _PC_CAP_PRESENT 指定されたファイルに対してケーパビリティ状態が 設定できる場合は 1 を返し、そうでなければ 0 を返します。 .It Li _PC_INF_PRESENT 指定されたファイルに対して情報ラベルが 設定できる場合は 1 を返し、そうでなければ 0 を返します。 .It Li _PC_MAC_PRESENT 指定されたファイルに対して強制アクセス制御 (MAC) ラベルが 設定できる場合は 1 を返し、そうでなければ 0 を返します。 .El .Sh 戻り値 .Fn pathconf または .Fn fpathconf の呼び出しが正常に完了しない場合は -1 が返され、 .Va errno が適切な値に設定されます。 変数に結び付けられた機能がシステム内に限界を持たないとき、-1 が返され、 .Va errno は修正されません。 それ以外の場合、現在の変数値が返されます。 .Sh エラー 次の条件のどれかが起きた場合、 .Fn pathconf システムコールと .Fn fpathconf システムコールは -1 を返し、 .Va errno に対応する値を設定します。 .Bl -tag -width Er .It Bq Er EINVAL .Fa name 引数の値が無効です。 .It Bq Er EINVAL このファイルとこの変数との結び付きは、実装されていません。 .El .Pp .Fn pathconf システムコールは次の場合に失敗します: .Bl -tag -width Er .It Bq Er ENOTDIR パスの構成要素中にディレクトリ以外のものが含まれています。 .It Bq Er ENAMETOOLONG パス名の構成要素が .Brq Dv NAME_MAX の文字数を越えているか (ただし上記の .Dv _PC_NO_TRUNC を参照)、またはパス名全体が .Brq Dv PATH_MAX の文字数を越えています。 .It Bq Er ENOENT 指定されたファイルが存在しません。 .It Bq Er EACCES 指定されたパスには、検索が許可されていないディレクトリが含まれています。 .It Bq Er ELOOP パス名を変換するときに検出されたシンボリックリンクが多すぎます。 .It Bq Er EIO ファイルシステムに読み書きしている間に入出力エラーが発生しました。 .El .Pp .Bl -tag -width Er .Fn fpathconf システムコールは次の場合に失敗します: .It Bq Er EBADF .Fa fd 引数が有効なオープンファイル記述子ではありません。 .It Bq Er EIO ファイルシステムに読み書きしている間に入出力エラーが発生しました。 .El .Sh 関連項目 .Xr sysctl 3 .Sh 歴史 .Fn pathconf システムコールと .Fn fpathconf システムコールは .Bx 4.4 ではじめて登場しました。