doc/ja_JP.eucJP/man/man2/open.2
Kazuo Horikawa d652d85bad Update to 4.2-20010112-STABLE base and revise Japanese wording.
Submitted by:jpman Project <man-jp@jp.FreeBSD.org>
2001-03-16 23:56:38 +00:00

290 lines
8.5 KiB
Groff

.\" Copyright (c) 1980, 1991, 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.
.\"
.\" @(#)open.2 8.2 (Berkeley) 11/16/93
.\"
.Dd November 16, 1993
.Dt OPEN 2
.Os BSD 4
.Sh 名称
.Nm open
.Nd 読取りまたは書込み用にファイルを開くかまたは作成する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <fcntl.h>
.Ft int
.Fn open "const char *path" "int flags" "..."
.Sh 解説
.Fa path
によって指定されるファイルは、引数
.Fa flags
によって指定されたように読取りまたは書込み (またはその両方) 用に開かれ、
そのファイル記述子は呼び出し元プロセスに返されます。
.Fa flags
引数で、
.Dv ( O_CREAT
フラグを指定することによって) ファイルが存在しない場合にファイルを
作成するように指示できます。
この場合、
.Nm
は 3 番目の引数
.Fa "mode_t mode"
が必要であり、ファイルは
.Xr chmod 2
で説明されているようにモード
.Fa mode
で作成され、プロセスの umask 値によって修正されます
.Pf ( Xr umask 2
を参照)。
.Pp
指定されたフラグは次の値の論理和
.\".Em or Ns 'ing
.Em ( or )
で作成されます。
.Pp
.Bd -literal -offset indent -compact
O_RDONLY 読取り専用で開く
O_WRONLY 書込み専用で開く
O_RDWR 読取りと書込み用に開く
O_NONBLOCK 開くときにブロックしない
O_APPEND 書込みのたびに末尾に追加する
O_CREAT ファイルが存在しない場合、作成する
O_TRUNC サイズを 0 に切り捨てる
O_EXCL ファイルを作成し、存在する場合はエラー
O_SHLOCK 共有ロックを自動的に取得する
O_EXLOCK 排他的ロックを自動的に取得する
.Ed
.Pp
.Dv O_APPEND
を設定してファイルを開くと、ファイルへ書込むごとに末尾に追加されます。
.Dv O_TRUNC
が指定されていてファイルが存在する場合、ファイルは長さ 0 に
切り捨てられます。
.Dv O_EXCL
.Dv O_CREAT
とともに設定されていてファイルが既に存在する場合、
.Fn open
はエラーを返します。これを使用して、
簡単な排他的アクセスロッキングメカニズムを
実現できます。
.Dv O_EXCL
が設定されていてパス名の最後の構成要素がシンボリックリンクの場合、
シンボリックリンクが存在しない名前を指していても
.Fn open
は処理に失敗します。
.Dv O_NONBLOCK
フラグが指定されていて
.Fn open
呼び出しの結果が何らかの理由でプロセスがブロックされると (たとえば、
ダイアルアップ回線でのキャリアの待機)、
.Fn open
は即座に戻ります。プロセスが開いたファイルに
最初に入出力しようとしたとき、プロセスはブロックします
(現時点では実装されていません)。
.Pp
ファイルを開くときに、共有ロックについては
.Dv O_SHLOCK
排他的ロックについては
.Dv O_EXLOCK
設定することによって
.Xr flock 2
によってロックが得られます。
.Dv O_CREAT
でファイルを作成する場合、ロックについての要求は処理に失敗すること
はありません (ただし、下層にあるファイルシステムが
ロックをサポートしている場合に限ります)。
.Pp
正常に完了すると、
.Fn open
は、ファイル記述子を示す負でない整数を返します。
処理に失敗すると -1 を返します。ファイル内の現在の位置をマークする
ファイルポインタはファイルの先頭に設定されます。
.Pp
新しいファイルが作成されるとき、そのファイルにはそれが含まれている
ディレクトリのグループが与えられます。
.Pp
新しい記述子は
.Xr execve 2
システムコールを通じて開いたままに設定されます。
.Xr close 2
.Xr fcntl 2
を参照してください。
.Pp
システムには、1 つのプロセスによって同時に開けるファイル記述子数に
制限があります。
.Xr getdtablesize 2
は現在のシステム制限を返します。
.Pp
.Sh システムの注意事項
非スレッドライブラリでは、
.Fn open
.Va open
システムコールとして実装されています。
.Pp
スレッドライブラリでは、
.Va open
システムコールは
.Fn _thread_sys_open
にアセンブルされ、
.Fn open
は、スレッドの再スケジュールを無効にし
.Fn _thread_sys_open
を呼び出す関数として実装されています。
戻る前に、
.Fn open
はスレッドの再スケジュールを有効にします。
.Sh 戻り値
正常に完了すると、
.Fn open
はファイル記述子である負でない整数を返します。
処理に失敗すると -1 が返され、エラーを示すために
.Va errno
が設定されます。
.Sh エラー
指定のファイルは次の場合を除いて開かれます。
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
.It Bq Er ENAMETOOLONG
パス名の構成要素が 255 文字を越えているか、
またはパス名全体が 1023 文字を越えています。
.It Bq Er ENOENT
.Dv O_CREAT
が設定されてなく、指定されたファイルが存在しません。
.It Bq Er ENOENT
存在しなければならないパス名の構成要素が存在しません。
.It Bq Er EACCES
前置パス名の構成要素について検索許可が拒否されています。
.It Bq Er EACCES
要求されたパーミッション (読取りまたは書込み用、または両方) が
指定のフラグに拒否されています。
.It Bq Er EACCES
.Dv O_CREAT
が指定されていて、ファイルが存在せず、かつファイルを作成する
ディレクトリに書込み許可がありません。
.It Bq Er ELOOP
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
.It Bq Er EISDIR
指定のファイルがディレクトリであり、引数が書込み用に開くことを
指定しています。
.It Bq Er EROFS
指定されたファイルは読取り専用ファイルシステム上にあり、
そのファイルを修正しようとしています。
.It Bq Er EMFILE
プロセスは、開いたファイル記述子に関する制限に達しています。
.It Bq Er ENFILE
システムファイルテーブルが満杯です。
.It Bq Er ENXIO
指定のファイルはキャラクタ型特殊ファイルまたはブロック型特殊
ファイルであり、この特殊ファイルに対応するデバイスは存在していません。
.It Bq Er ENXIO
指定されたファイルは FIFO パイプで、どのプロセスからも
読取り用にオープンされていないにも関らず、
書込み用にオープンしようとしました。
.It Bq Er EINTR
.Fn open
操作がシグナルによって割り込みされました。
.It Bq Er EOPNOTSUPP
.Dv O_SHLOCK
または
.Dv O_EXLOCK
が指定されましたが、下層となっているファイルシステムは
ロックをサポートしていません。
.It Bq Er EWOULDBLOCK
.Dv O_NONBLOCK
と、
.Dv O_SHLOCK
.Dv O_EXLOCK
のどちらかが指定されましたが、ファイルはロックされています。
.It Bq Er ENOSPC
.Dv O_CREAT
が指定されていて、ファイルが存在せず、新しいファイル用のエントリを
配置中のディレクトリは、そのディレクトリを含むファイルシステムに
空間が残っていないため拡張できません。
.It Bq Er ENOSPC
.Dv O_CREAT
が指定されていて、ファイルが存在せず、かつファイルが作成中の
ファイルシステム上に未使用の inode がありません。
.It Bq Er EDQUOT
.Dv O_CREAT
が指定されていて、ファイルが存在せず、かつ新しいファイル用の
エントリを配置中のディレクトリは、そのディレクトリを含む
ファイルシステム上でディスクブロックの
ユーザのクォータが枯渇したために拡張できません。
.It Bq Er EDQUOT
.Dv O_CREAT
が指定されていて、ファイルが存在せず、かつファイルを作成中の
ファイルシステム上で inode のユーザのクォータが枯渇しています。
.It Bq Er EIO
ディレクトリエントリを作成中、または
.Dv O_CREAT
用の inode を割当て中に入出力エラーが発生しました。
.It Bq Er ETXTBSY
ファイルは実行中の純粋な手続き (共有テキスト) ファイルであり、
.Fn open
呼び出しは書込みアクセスを要求しています。
.It Bq Er EFAULT
.Fa path
は、プロセスに割り当てられたアドレス空間の範囲外を指しています。
.It Bq Er EEXIST
.Dv O_CREAT
.Dv O_EXCL
が指定されていて、ファイルが存在します。
.It Bq Er EOPNOTSUPP
ソケットを開こうとしました (現時点では実装されていません)。
.It Bq Er EINVAL
.Dv O_RDONLY ,
.Dv O_WRONLY
および
.Dv O_RDWR
の不正な組合わせで記述子を開こうとしました。
.El
.Sh 関連項目
.Xr chmod 2 ,
.Xr close 2 ,
.Xr dup 2 ,
.Xr getdtablesize 2 ,
.Xr lseek 2 ,
.Xr read 2 ,
.Xr umask 2 ,
.Xr write 2
.Sh 歴史
.Fn open
関数は
.At v6
で登場しました。