Revise Japanese wording.

Submitted by:	SUZUKI Koichi <metal@gc5.so-net.ne.jp>
This commit is contained in:
Kazuo Horikawa 2002-12-20 04:41:21 +00:00
parent 39a6e677fb
commit 128993012e
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=15393
145 changed files with 1498 additions and 1523 deletions

View file

@ -47,7 +47,7 @@
.Fn _exit "int status"
.Sh 解説
.Fn _exit
関数はプロセスを終了させ、以降のような結果をもたらします:
関数はプロセスを終了させ、以降のような結果をもたらします:
.Bl -bullet
.It
呼び出し元プロセス内のすべての記述子が閉じられます。
@ -78,7 +78,7 @@
(通常はグループのメンバ全員に対する親が終了したため。
.Xr intro 2
.Dq 孤児になったプロセスグループ (Orphaned Process Group)
.Dq 親のないプロセスグループ (Orphaned Process Group)
を参照)、そして親のないグループのメンバのいずれかが停止されている場合、
その新たな親のないプロセスグループのすべてのメンバに
.Dv SIGHUP
@ -96,7 +96,8 @@
.Pp
ほとんどの C プログラムはライブラリルーチン
.Xr exit 3
を呼び出します。これはバッファをフラッシュし、ストリームを閉じ、
を呼び出します。
これはバッファをフラッシュし、ストリームを閉じ、
一時ファイルをアンリンクするなどした後に
.Fn _exit
を呼び出します。
@ -112,7 +113,7 @@
.Fn _exit
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn _exit
関数は

View file

@ -80,7 +80,7 @@
は結果パラメータで、
通信レイヤに既知の接続エンティティのアドレスで埋められます。
.Fa addr
パラメータの正確な形式は通信が行われるドメインで決まります。
パラメータの正確な形式は通信が行われるドメインで決まります。
.Fa addrlen
は、「値 - 結果」パラメータです。
これは最初は
@ -104,7 +104,8 @@
のような明瞭な確認が必要な特定のプロトコルでは、
.Fn accept
は単に次の接続要求を待ち行列から除くだけで、
確認は行わないと考えられます。確認は、新しいファイル記述子についての
確認は行わないと考えられます。
確認は、新しいファイル記述子についての
通常の読取りまたは書込みによって行うことができ、
拒絶は新しいソケットを閉じる事によって実現できます。
.Pp

View file

@ -85,7 +85,8 @@
プロセスの実ユーザもしくは実効ユーザに適切な特権があり、
.Dv X_OK
について成功を示していても、実際にはファイルの実行許可ビットが
設定されていないことがあります。同じことが、
設定されていないことがあります。
同じことが、
.Dv R_OK
および
.Dv W_OK
@ -93,7 +94,7 @@
.Sh 戻り値
.Rv -std
.Sh エラー
ファイルへのアクセスは次の場合に拒絶されます
ファイルへのアクセスは次の場合に拒絶されます:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -139,7 +140,7 @@
.Fn access
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn access
関数は

View file

@ -50,7 +50,7 @@
呼び出しは、システムアカウンティングレコードの収集を有効または無効にします。
引数
.Fa file
ヌルポインタである場合、アカウンティングは無効にされます。
NULL ポインタである場合、アカウンティングは無効にされます。
.Fa file
.Em 既存
@ -76,11 +76,11 @@
少なくなると、アカウンティングは自動的に無効になります。
空き容量が増えて再び利用できるようになると有効になります。
.Sh 戻り値
エラーの場合は -1 が返されます。ファイルは存在している必要があり、
呼び出しはスーパユーザだけができます。
エラーの場合は -1 が返されます。
ファイルは存在している必要があり、呼び出しはスーパユーザだけができます。
.Sh エラー
.Fn acct
関数は次の場合に処理を失敗します
関数は次の場合に処理を失敗します:
.Bl -tag -width Er
.It Bq Er EPERM
スーパユーザ以外のユーザによって呼び出されました。

View file

@ -60,7 +60,8 @@
.Fa delta
が正の場合は通常より大きな増分を使用します。
訂正を実行するために使用されるずれは、
一般には 1 パーセントの割合です。これにより、時刻は常に単調増加関数となります。
一般には 1 パーセントの割合です。
これにより、時刻は常に単調増加関数となります。
以前の
.Fn adjtime
呼び出しによる時刻訂正が、再び
@ -82,7 +83,7 @@
.Rv -std adjtime
.Sh エラー
.Fn adjtime
関数は次の場合に処理を失敗します
関数は次の場合に処理を失敗します:
.Bl -tag -width Er
.It Bq Er EFAULT
引数は、プロセスに割り当てられたアドレス空間の範囲外を指しています。

View file

@ -45,7 +45,8 @@
.Fa iocb
が指定された場合、指定された非同期入出力要求だけをキャンセルします。
.Pp
通常の非同期通知がキャンセルされた要求に対して発生します。要求は
通常の非同期通知がキャンセルされた要求に対して発生します。
要求は
.Er ECANCELED
のエラー結果となって完了します。
.Sh 制限
@ -87,12 +88,13 @@
.Fn aio_cancel
.St -p1003.2
準拠しています。
適合しています。
.Sh 歴史
.Fn aio_cancel
関数は
.Fx 3.0
ではじめて登場しました。機能する
ではじめて登場しました。
機能する
.Fn aio_cancel
の実装は
.Fx 4.0

View file

@ -30,7 +30,7 @@
.Os
.Sh 名称
.Nm aio_error
.Nd 非同期入出力操作のエラーステータスを取り出す (REALTIME)
.Nd 非同期入出力操作のエラー状態を取り出す (REALTIME)
.Sh ライブラリ
.Lb libc
.Sh 書式
@ -52,8 +52,8 @@
要求が失敗した上で完了している場合、
.Xr read 2 ,
.Xr write 2 ,
.Xr fsync 2 ,
に記述されているようなエラーステータスが返されます。
.Xr fsync 2
に記述されているようなエラー状態が返されます。
処理が失敗した場合に
.Fn aio_error
@ -83,7 +83,7 @@
.Fn aio_error
関数は
.St -p1003.2
準拠しています。
適合しています。
.Sh 歴史
.Nm
関数は

View file

@ -50,7 +50,7 @@
を、
.Fa iocb->aio_buf
が指すバッファに
読取れるようにします。
取れるようにします。
呼び出しは、読取り要求が記述子に待ち行列として入れられ
るとただちに戻ります。
呼び出しが戻った時点で読取りは完了していることもありますし、
@ -60,7 +60,7 @@ _POSIX_PRIORITIZED_IO
しかも記述子がこれをサポートしている場合に
待ち行列に入れられている操作は、呼び出しプロセスの優先順位から
.Fa iocb->aio_reqprio
を減じたものに等しい優先順位でサブミットされます。
を減じたものに等しい優先順位で発行されます。
.Pp
.Fa iocb->aio_lio_opcode
@ -68,8 +68,8 @@ _POSIX_PRIORITIZED_IO
呼び出しによって無視されます。
.Pp
.Fa iocb
ポインタは、進行中に待ち行列に入れられた戻りステータスまたは
エラーステータスを判定するために、
ポインタは、進行中に待ち行列に入れられた戻り状態または
エラー状態を判定するために、
.Fn aio_return
.Fn aio_error
@ -110,7 +110,7 @@ _POSIX_PRIORITIZED_IO
なし。
.Sh エラー
.Fn aio_read
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EAGAIN
システムリソースの限界のために要求は待ち行列に入れられませんでした。
@ -121,7 +121,7 @@ _POSIX_PRIORITIZED_IO
.Pp
以降の条件は、
.Fn aio_read
呼び出しが行われたときに同期的に検出されることもありますし、
呼び出しが行われたときに同期的に検出されることもありますし、
その後いつでも非同期的に検出されることもあります。
これらが呼び出し時に検出された場合、
.Fn aio_read
@ -194,7 +194,7 @@ _POSIX_PRIORITIZED_IO
.Fn aio_read
呼び出しは
.St -p1003.2
準拠しています。
適合しています。
.Sh 歴史
.Nm

View file

@ -30,7 +30,7 @@
.Os
.Sh 名称
.Nm aio_return
.Nd 非同期入出力操作の戻りステータスを取り出す (REALTIME)
.Nd 非同期入出力操作の戻り状態を取り出す (REALTIME)
.Sh ライブラリ
.Lb libc
.Sh 書式
@ -41,22 +41,22 @@
.Fn aio_return
関数は
.Fa iocb
が指す構造体に対応する非同期入出力要求の最終ステータスを返します。
が指す構造体に対応する非同期入出力要求の最終状態を返します。
.Pp
.Xr aio_error 2
.Er EINPROGRESS
以外の何かを返した時の非同期入出力操作の最終ステータスを得るためには
以外の何かを返した時の非同期入出力操作の最終状態を得るためには
.Fn aio_return
を 1 回だけしか呼び出してはいけません。
.Sh 戻り値
非同期入出力要求が完了すると
.Xr read 2 ,
.Xr write 2 ,
.Xr write 2
または
.Xr fsync 2
で説明したようなステータスが
返されます。処理を失敗した場合に
で説明したような状態が返されます。
処理を失敗した場合に
.Fn aio_return
.Dv -1
@ -65,7 +65,7 @@
を設定します。
.Sh エラー
.Fn aio_return
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa iocb
@ -85,7 +85,7 @@
.Fn aio_return
.St -p1003.2
準拠しています。
適合しています。
.Sh 歴史
.Nm
関数は

View file

@ -51,9 +51,10 @@
NULL が入っている配列メンバはそのまま無視されます。
.Pp
.Fa timeout
ヌルポインタでない場合、それは延期する時間の最大インターバルを指定します。
NULL ポインタでない場合、それは延期する時間の最大間隔を指定します。
.Fa timeout
がヌルポインタの場合、無期限に延期します。ポーリングするためには
が NULL ポインタの場合、無期限に延期します。
ポーリングするためには
.Fa timeout
は値 0 の timespec 構造体を指しているべきです。
.Sh 戻り値
@ -65,7 +66,7 @@ NULL
がエラー状態を示すためにセットされます。
.Sh エラー
.Fn aio_suspend
関数は次の場合に失敗します
関数は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EAGAIN
入出力要求がどれも完了しないうちに
@ -91,7 +92,7 @@ NULL
.Fn aio_suspend
.St -p1003.2
標準に準拠しています。
標準に適合しています。
.Sh 歴史
.Nm
関数は

View file

@ -39,52 +39,55 @@
.Fn aio_waitcomplete "struct aiocb **iocbp" "struct timespec *timeout"
.Sh 解説
.Fn aio_waitcomplete
関数は非同期入出力の完了まで待ちます。完了次第、
関数は非同期入出力の完了まで待ちます。
完了次第、
.Fn aio_waitcomplete
はその関数の結果を返し、
元の要求に関連する構造体へのポインタを
.Fa iocbp
にセットします。もし、
に設定します。
もし、
.Fn aio_waitcomplete
関数が呼び出される前に非同期入出力要求が完了していた場合には、
完了した要求の結果を即座に返します。
.Pp
.Fa timeout
ヌルポインタでない場合、それは非同期入出力要求が完了するまで
NULL ポインタでない場合、それは非同期入出力要求が完了するまで
待機する最大時間を指定します。
.Fa timeout
ヌルポインタの場合は、
NULL ポインタの場合は、
.Fn aio_waitcomplete
は無期限に待機します。
ポーリングする場合は、
引数
.Fa timeout
ヌルではなく、0 の値を持つ timeval 構造体を指すようにするべきです。
NULL ではなく、0 の値を持つ timeval 構造体を指すようにするべきです。
.Pp
.Fn aio_waitcomplete
関数は
.Fn aio_return
の役割もします。従って、
コントロールブロックは
の役割もします。
従って、制御ブロックは
.Fa iocbp
で返されているので、
.Fn aio_return
を呼び出すべきではありません。
.Sh 戻り値
非同期入出力リクエストが完了した場合、
非同期入出力要求が完了した場合、
.Fa iocbp
に元のリクエストから渡されたコントロールブロックを指すポインタを設定し、
に元の要求から渡された制御ブロックを指すポインタを設定し、
.Xr read 2 ,
.Xr write 2 ,
.Xr fsync 2
で述べられているのと同様のステータスを返します。
で述べられているのと同様の状態を返します。
失敗した場合、
.Fn aio_waitcomplete
.Dv -1
を返し、iocbp に
.Dv NULL
を設定します。そして、
を設定します。
そして、
.Va errno
にエラーの状況を設定します。
.Sh エラー
@ -101,10 +104,10 @@
を呼び出していません。
.It Bq Er EINTR
タイムアウトする前で、かつ
非同期入出力リクエストが完了する前にシグナルが届きました。
非同期入出力要求が完了する前にシグナルが届きました。
.It Bq Er EWOULDBLOCK
.It Bq Er EINPROGRESS
非同期入出力リクエストが完了する前に、指定された制限時間に達しました。
非同期入出力要求が完了する前に、指定された制限時間に達しました。
.El
.Sh 関連項目
.Xr aio_cancel 2 ,

View file

@ -45,11 +45,12 @@
.Fa iocb->aio_fildes
.Fa iocb->aio_nbytes
を書き込めます。書込み要求が記述子への待ち行列に入れられてしまうと
を書き込めます。
書込み要求が記述子への待ち行列に入れられてしまうと、
ただちに呼び出しは戻ります。
呼び出しが戻った時点で書込みは完了している可能性も完了していない
可能性もあります。無効な引数のためなどにより
要求を待ち行列に入れられない場合は、
可能性もあります。
無効な引数のためなどにより要求を待ち行列に入れられない場合は、
呼び出しは要求を待ち行列に入れずに戻ります。
.Pp
.Fa iocb->aio_fildes
@ -57,7 +58,7 @@
.Dv O_APPEND
が設定されている場合、
.Fn aio_write
操作は呼び出しが行われたのと同じ順序で
操作は呼び出しが行われたのと同じ順序で
ファイルの末尾に追加されます。
.Dv O_APPEND
がファイル記述子用に設定されていない場合、書込み操作はファイルの先頭に
@ -121,7 +122,7 @@
.Pp
次の状態は
.Fn aio_write
呼び出しが行われたときに同期的に検出でき、
呼び出しが行われたときに同期的に検出でき、
その後いつでも非同期的に検出できます。
これらが呼び出し時に検出された場合に
.Fn aio_write
@ -185,7 +186,7 @@
.Fn aio_write
.St -p1003.2
標準に準拠しています。
標準に適合しています。
.Sh 歴史
.Nm
関数は

View file

@ -38,7 +38,7 @@
.Os
.Sh 名称
.Nm bind
.Nd assign a local protocol address to a socket
.Nd ローカルプロトコルアドレスをソケットに割り当てる
.Sh ライブラリ
.Lb libc
.Sh 書式
@ -76,7 +76,7 @@ UNIX
.Rv -std bind
.Sh エラー
.Fn bind
呼び出しは次の場合に失敗します
呼び出しは次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EAGAIN
要求を満たすためのカーネルリソースが一時的に利用できません。

View file

@ -60,7 +60,7 @@
.Fn brk
関数と
.Fn sbrk
関数は、プロセスのデータセグメントに割当てられた
関数は、プロセスのデータセグメントに割当てられた
メモリ量を変更するために使用されます。
これは、
.Dq ブレーク
@ -79,7 +79,7 @@
.Fa incr
バイトだけ増し、結果として少なくとも
.Fa incr
バイトの新規メモリをデータセグメントに割当てます。
バイトの新規メモリをデータセグメントに割当てます。
.Fa incr
が負の場合、ブレークは
.Fa incr
@ -124,16 +124,15 @@
.Fn brk
または
.Fn sbrk
は、以降のうちの 1 つが真の場合に処理に失敗します:
は、の場合に処理に失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
要求されたブレーク値がデータセグメントの先頭を越えてい
要求されたブレーク値がデータセグメントの先頭を越えています
.It Bq Er ENOMEM
.Xr setrlimit 2
が設定した
データセグメントサイズの限界を越えた。
が設定したデータセグメントサイズの限界を越えています。
.It Bq Er ENOMEM
データセグメントの拡張に必要なスワップ領域内の空間が不充分。
データセグメントの拡張に必要なスワップ領域内の空間が不充分です
.El
.Sh 関連項目
.Xr execve 2 ,
@ -149,12 +148,13 @@
と、
.Xr malloc 3 ,
.Xr free 3
やこれに類する関数を混在させると、移植不可能なプログラム動作となります。
やこれに類する関数を混在させると、移植性のないプログラム動作となります。
.Pp
ブレークの設定は、スワップ空間の一時的な不足のために処理が失敗する
可能性があります。これは
可能性があります。
これは
.Xr getrlimit 2
を使用せずには、データセグメントの最大サイズを越えたことに起因する
を使用しないと、データセグメントの最大サイズを越えたことに起因する
失敗と区別することはできません。
.Sh 歴史
.Fn brk

View file

@ -71,9 +71,9 @@
.Sh 戻り値
.Rv -std
.Sh エラー
次の 1 つまたは複数が真の場合、
次のうち 1 つ以上が真の場合、
.Fn chdir
関数の処理は失敗し、現在の作業ディレクトリは変更されません
関数の処理は失敗し、現在の作業ディレクトリは変更されません:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -93,9 +93,9 @@
ファイルシステムに読み書きしている間に入出力エラーが発生しました。
.El
.Pp
次の 1 つまたは複数が真の場合、
次のうち 1 つ以上が真の場合、
.Fn fchdir
関数の処理は失敗し、現在の作業ディレクトリは変更されません
関数の処理は失敗し、現在の作業ディレクトリは変更されません:
.Bl -tag -width Er
.It Bq Er EACCES
ファイル記述子が参照するディレクトリで検索が許可されていません。
@ -112,7 +112,7 @@
.Fn chdir
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn chdir
関数は

View file

@ -108,7 +108,8 @@
フラグは、スーパユーザだけが設定または設定解除できます。
スーパユーザのみが設定できるフラグを
スーパユーザでないものが設定しようとしても
警告なしで無視されます。これらのフラグはいつでも設定できますが、
警告なしで無視されます。
これらのフラグはいつでも設定できますが、
通常は、システムがシングルユーザモードにあるときにだけ
設定解除するのが普通です (詳細については
.Xr init 8
@ -117,7 +118,7 @@
.Rv -std
.Sh エラー
.Fn chflags
関数の処理は以下の場合に失敗します
関数の処理は以下の場合に失敗します:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -145,7 +146,7 @@
.El
.Pp
.Fn fchflags
関数の処理は以下の場合に失敗します
関数の処理は以下の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EBADF
記述子が有効ではありません。
@ -157,7 +158,7 @@
実効ユーザ ID がファイルの所有者と一致せず、
実効ユーザ ID がスーパユーザではありません。
.It Bq Er EROFS
ファイルが読取り専用システム上に存在しています。
ファイルが読取り専用システム上に存在しています。
.It Bq Er EIO
ファイルシステムに読み書きしている間に入出力エラーが発生しました。
.It Bq Er EOPNOTSUPP

View file

@ -123,14 +123,14 @@ UFS
.Xr sticky 8
を参照してください。
.Pp
あるディレクトリに ISUID (set-user-id ビット) が設定されており、
あるディレクトリに ISUID (ユーザ ID 設定ビット) が設定されており、
かつファイルシステムをマウントする際に MNT_SUIDDIR オプションが
指定されていた場合、
このディレクトリ内に作成される新しいファイルとサブディレクトリの所有者は、
ディレクトリの所有者に設定されます。
この機能が有効であるとき、新しいディレクトリは親から
ISUID ビットを継承します。実行ビットはファイルから取り除かれ、
ファイルは root の所有とはなりません。
ISUID ビットを継承します。
実行ビットはファイルから取り除かれ、ファイルは root の所有とはなりません。
この機能は、ファイルへの書込みがユーザに許可される条件を変更しません。
ファイルが作成された後の最終的な所有者の決定に影響するのみです。
グループは継承されません。
@ -147,17 +147,17 @@ suiddir
を参照してください。
.Pp
スーパユーザ以外のユーザによる、
ファイルの書込みまたはファイルの所有者の変更によって set-user-id
ビットと set-group-id ビットはオフに切り替えられます。
ファイルの書込みまたはファイルの所有者の変更によってユーザ ID 設定ビットと
グループ ID 設定ビットはオフに切り替えられます。
互換性は犠牲になりますが、
set-user-id (set-group-id) ビットを残したまま
ユーザ ID 設定 (グループ ID 設定) ビットを残したまま
ファイルが変更されるのを防ぐことで、
システムはいくらか安全になります。
.Sh 戻り値
.Rv -std
.Sh エラー
.Fn chmod
関数は、次の場合に処理に失敗しファイルモードは変更されません
関数は、次の場合に処理に失敗しファイルモードは変更されません:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -185,7 +185,7 @@ set-user-id (set-group-id)
.El
.Pp
.Fn fchmod
関数は、次の場合に処理を失敗します
関数は、次の場合に処理を失敗します:
.Bl -tag -width Er
.It Bq Er EBADF
記述子が有効ではありません。
@ -211,7 +211,7 @@ set-user-id (set-group-id)
.Dv S_ISTXT
の使用法を除けば
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn chmod
関数は

View file

@ -60,16 +60,18 @@
.Fa owner
および
.Fa group
に変更します。ファイルの所有者は、
に変更します。
ファイルの所有者は、
.Fa group
に自分が所属している任意のグループを指定できます。しかし、
に自分が所属している任意のグループを指定できます。
しかし、
.Fa owner
を変更することができるのはスーパユーザのみです。
.Pp
.Fn chown
関数は、スーパユーザによって実行される場合をのぞいて、
ファイル上の set-user-id ビットと set-group-id ビットをクリアします。
これは、set-user-id あるいは set-group-id されたプログラムが
ファイル上のユーザ ID 設定ビットとグループ ID 設定ビットをクリアします。
これは、ユーザ ID 設定あるいはグループ ID 設定されたプログラムが
偶然、またはいたずらで作成されるのを防止するためです。
.Fn chown
は、シンボリックリンクをたどり、
@ -93,7 +95,7 @@
.Fn chown
.Fn lchown
は、次の場合に処理を失敗して、ファイルは変更されません
は、次の場合に処理を失敗して、ファイルは変更されません:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -118,7 +120,7 @@
.El
.Pp
.Fn Fchown
関数は、次の場合に失敗します
関数は、次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EBADF
.Fa fd
@ -142,7 +144,7 @@
.Fn chown
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn chown
関数は

View file

@ -78,29 +78,29 @@
で失敗します。
.Pp
.Ql kern.chroot_allow_open_directories
が 1 にセットされている場合 (デフォルト)、
が 1 に設定されている場合 (デフォルト)、
ディレクトリがオープンされていて、そのプロセスが
.Fn chroot
呼び出しの影響を受ける場合
呼び出しの影響を受ける
.Er EPERM
で失敗します。
.Pp
.Ql kern.chroot_allow_open_directories
が他の値の場合、オープンディレクトリのチェックはされません。
.Pp
正常に完了すると、値 0 が返されます。そうでない場合は、値 -1 が返され、
エラーを示すために
正常に完了すると、値 0 が返されます。
そうでない場合は、値 -1 が返され、エラーを示すために
.Va errno
が設定されます。
.Sh エラー
.Fn chroot
関数は、次の場合処理に失敗し、ルートディレクトリは変更されません
関数は、次の場合処理に失敗し、ルートディレクトリは変更されません:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
.It Bq Er EPERM
実効ユーザ ID がスーパユーザではありません。またはディレクトリが
1 つ以上のファイル記述子によってオープンされています。
実効ユーザ ID がスーパユーザではありません。
またはディレクトリが 1 つ以上のファイル記述子によってオープンされています。
.It Bq Er ENAMETOOLONG
パス名の構成要素が 255 文字を越えているか、
またはパス名全体が 1023 文字を越えています。

View file

@ -40,7 +40,7 @@
.Nm clock_gettime ,
.Nm clock_settime ,
.Nm clock_getres
.Nd 日付と時刻の取得/設定/精度の取得をする
.Nd 日付と時刻の取得 / 設定 / 精度の取得をする
.Sh ライブラリ
.Lb libc
.Sh 書式
@ -102,7 +102,7 @@ struct timespec {
.Sh エラー
次のエラーコードが
.Va errno
に設定されます
に設定されます:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa clock_id
@ -122,4 +122,4 @@ etc.\&
.Fn clock_gettime
等の関数は
.St -p1003.1b-93
準拠しています。
適合しています。

View file

@ -49,8 +49,8 @@
.Fn close
はプロセスのオブジェクト参照テーブルから記述子を削除します。
これがそのオブジェクトへの最後の参照だった場合、
オブジェクトはアクティブでなくなります。たとえば、
ファイルに対する最後のクローズで、そのファイルに結び付けられた現在の
オブジェクトはアクティブでなくなります。
たとえば、ファイルに対する最後のクローズで、そのファイルに結び付けられた現在の
.Em seek
ポインタは失われます。
.Xr socket 2
@ -60,7 +60,8 @@
ファイルに対する最後のクローズで、ロックは解放されます
(詳細は
.Xr flock 2
を参照)。しかし、System V と
を参照)。
しかし、System V と
.St -p1003.1-88
では、あるプロセスがファイルに対して保持しているすべての
.Xr fcntl 2
@ -69,8 +70,8 @@
がそのプロセスによって閉じられるときに削除される、と規定しています。
.Pp
プロセスが終了するとき、プロセスに結び付けられた
ファイル記述子はすべて解放されます。しかし、
アクティブな記述子の個数にはプロセスごとに制限があるので、
ファイル記述子はすべて解放されます。
しかし、アクティブな記述子の個数にはプロセスごとに制限があるので、
大量のファイル記述子を処理するときは、
.Fn close
関数呼び出しが便利です。
@ -79,7 +80,8 @@
.Pf ( Xr fork 2
参照)、新しい子プロセスの記述子はすべて、
フォークの前に親プロセスの記述子が参照していたのと同じオブジェクトを
参照します。次に、新しいプロセスが
参照します。
次に、新しいプロセスが
.Xr execve 2
で実行される場合、そのプロセスは通常これらの記述子を継承します。
ほとんどの記述子は
@ -88,16 +90,16 @@
.Xr dup2 2
で再配置されるか、
.Fn close
で削除されます。もし execve が失敗した場合にこれらの記述子が
必要になるのであれば、execve が成功した場合にのみ
それらをクローズするようにする必要があります。
で削除されます。
もし execve が失敗した場合にこれらの記述子が必要になるのであれば
execve が成功した場合にのみ、それらをクローズするようにする必要があります。
このために、
.Dq Li fcntl(d, F_SETFD, FD_CLOEXEC)
呼び出しが準備されています。これは execve が成功した後で、
記述子を閉じるように指示します。
呼び出しが準備されています。
これは execve が成功した後で、記述子を閉じるように指示します。
.Dq Li fcntl(d, F_SETFD, 0)
呼び出しはこれをデフォルトに戻します。デフォルトでは、
記述子はクローズされません。
呼び出しはこれをデフォルトに戻します。
デフォルトでは、記述子はクローズされません。
.Sh 戻り値
.Rv -std close
.Sh エラー
@ -123,7 +125,7 @@
.Fn close
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn close
関数は

View file

@ -49,31 +49,38 @@
.Sh 解説
パラメータ
.Fa s
はソケットです。このタイプが
はソケットです。
このタイプが
.Dv SOCK_DGRAM
の場合、この呼び出しはソケットが結び付けられる
通信相手を指定します。このアドレスは送信データグラムの送信先であり、
受信データグラムの送信元となる唯一のアドレスです。ソケットのタイプが
通信相手を指定します。
このアドレスは送信データグラムの送信先であり、
受信データグラムの送信元となる唯一のアドレスです。
ソケットのタイプが
.Dv SOCK_STREAM
の場合、この呼び出しは通信相手のソケットに接続を確立
しようとします。通信相手のソケットは
しようとします。
通信相手のソケットは
.Fa name
で指定されます。
.Fa name
はソケット通信空間内のアドレスです。各通信空間は
はソケット通信空間内のアドレスです。
各通信空間は
.Fa name
パラメータを独自の方法で解釈します。一般に、ストリームソケットが正常に
パラメータを独自の方法で解釈します。
一般に、ストリームソケットが正常に
.Fn connect
できるのは 1 回だけです。データグラムソケットは
できるのは 1 回だけです。
データグラムソケットは
.Fn connect
を複数回使用してその結び付けを変更できます。データグラム
ソケットは、NULL アドレスのような無効なアドレスに接続することによって
結び付けを解除できます。
を複数回使用してその結び付けを変更できます。
データグラムソケットは、NULL アドレスのような無効なアドレスに
接続することによって結び付けを解除できます。
.Sh 戻り値
.Rv -std connect
.Sh エラー
.Fn connect
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EBADF
.Fa s

View file

@ -69,7 +69,8 @@
.Fa oldd
.Fa newd
をまったく区別しません。したがって
をまったく区別しません。
したがって
.Fa newd
.Fa oldd
@ -84,13 +85,14 @@
一つのファイルへの別々のポインタが必要な場合は、追加の
.Xr open 2
を呼び出し、ファイルへの異なるオブジェクト参照を
得る必要があります。このとき、新しいファイル記述子の
close-on-exec フラグは設定解除されています。
得る必要があります。
このとき、新しいファイル記述子の close-on-exec フラグは設定解除されています。
.Pp
.Fn dup2
には新しい記述子
.Fa newd
の値を指定します。この記述子が既に使用されていた場合、
の値を指定します。
この記述子が既に使用されていた場合、
.Fa oldd
\*(Ne
.Fa newd
@ -118,7 +120,7 @@ close-on-exec
.Fn dup
関数と
.Fn dup2
関数は、次の場合に処理に失敗します
関数は、次の場合に処理に失敗します:
.Bl -tag -width Er
.It Bq Er EBADF
.Fa oldd
@ -143,7 +145,7 @@ close-on-exec
.Fn dup2
関数は、
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn dup
関数と

View file

@ -50,13 +50,15 @@
関数は、呼び出しプロセスを新しいプロセスに変換します。
新しいプロセスは
.Em new process file
と呼ばれる通常のファイルに基いて構成されます。このファイルの名前は
と呼ばれる通常のファイルに基づいて構成されます。
このファイルの名前は
.Fa path
によって指定されます。
このファイルは実行可能オブジェクトファイル、またはインタプリタ用の
データのファイルです。実行可能オブジェクトファイルは、識別ヘッダに
データのページが続いたもので構成されます。このデータは
初期プログラム (テキスト) と初期値ありデータのページを表します。
データのファイルです。
実行可能オブジェクトファイルは、識別ヘッダに
データのページが続いたもので構成されます。
このデータは、初期プログラム (テキスト) と初期値ありデータのページを表します。
追加のページはヘッダの指定によって 0 データで初期化される場合があります。
.Xr elf 5
および
@ -77,25 +79,27 @@
.Em interpreter
.Sy execve
します。オプションの
します。
オプションの
.Em arg
が指定されている場合、それは
.Em interpreter
の 1番目の引数に
なり、元々の
の 1番目の引数になり、元々の
.Sy execve
で指定されたファイルの名前は 2 番目の引数になります。それ以外では
で指定されたファイルの名前は 2 番目の引数になります。
それ以外では
.Sy execve
で指定されたファイルの名前が 1番目の引数になります。
元々の引数はシフトされて後続の引数に
なります。0 番目の引数は指定された
なります。
0 番目の引数は指定された
.Em interpreter
に設定されます。
.Pp
引数
.Fa argv
は、ヌルで終了する文字ポインタの配列を指すポインタです。
各文字ポインタはヌル文字で終了する文字列を指します。
は、ヌル文字で終わる文字ポインタの配列を指すポインタです。
各文字ポインタはヌル文字で終る文字列を指します。
これらの文字列は、新しいプロセスから参照できる引数リストを構成します。
少なくとも 1 つの引数が配列内に存在している必要があります。
慣習では、最初の要素が実行されたプログラムの名前になるはずです (たとえば、
@ -104,11 +108,12 @@
.Pp
引数
.Fa envp
も、ヌルで終了する文字ポインタの配列を指すポインタです。
各文字ポインタはヌル文字で終了する文字列を指します。
も、ヌル文字で終わる文字ポインタの配列を指すポインタです。
各文字ポインタはヌル文字で終る文字列を指します。
この配列を指すポインタは、通常、グローバル変数
.Va environ
に保存されます。これらの文字列は、引数としてコマンドへ直接
に保存されます。
これらの文字列は、引数としてコマンドへ直接
渡されない情報を新しいプロセスに渡します
.Pf ( Xr environ 7
を参照)。
@ -125,8 +130,8 @@
の影響を受けません。
.Pp
.Fn execve
が呼び出された時に標準の記述子 (0, 1 そして/または 2) がクローズされ、
set-id の結果、そのプロセスが特権を得た場合には、
が呼び出された時に標準の記述子 (0, 1 そして / または 2) がクローズされ、
ID 設定の結果、そのプロセスが特権を得た場合には、
それらの記述子は自動的にオープンされます。
特権を持っているかどうかに関わらず、どのプログラムも
.Fn execve
@ -137,26 +142,27 @@ set-id
新しいプロセス内でも無視されるように設定されます。
呼び出しプロセスイメージ内で捕捉されるように設定されたシグナルは、
新しいプロセスイメージ内でデフォルトのアクションに
設定されます。ブロックされたシグナルは、
設定されます。
ブロックされたシグナルは、
シグナルアクションの変化とは無関係にブロックされたままになります。
シグナルスタックは未定義にリセットされます (詳細については
.Xr sigaction 2
を参照してください)。
.Pp
新しいプロセスイメージファイルに set-user-ID モードビット
新しいプロセスイメージファイルにユーザ ID 設定モードビット
が設定されている場合
.Pf ( Xr chmod 2
を参照)、新しいプロセスイメージの実効ユーザ ID は、
新しいプロセスイメージファイルの所有者 ID に設定されます。
新しいプロセスイメージファイルに set-group-ID モードビットが
新しいプロセスイメージファイルにグループ ID 設定モードビットが
設定されている場合、新しいプロセスイメージの実効グループ ID は新しい
プロセスイメージファイルのグループ ID に設定されます
(実効グループ ID はグループリストの最初の要素です)。
新しいプロセスの実ユーザ ID、実グループ ID、およびその他の
グループ ID は、呼び出しプロセスイメージと同じになります。
set-user-ID および set-group-ID 処理の後、実効ユーザ ID は
saved set-user-ID として記録され、実効グループ ID は
saved set-group-ID として記録されます。
ユーザ ID 設定およびグループ ID 設定処理の後、実効ユーザ ID は
退避ユーザ ID として記録され、実効グループ ID は
退避グループ IDとして記録されます。
これらの値は、後で実効 ID を変更するのに使用できます
.Pf ( Xr setuid 2
を参照)。
@ -164,7 +170,7 @@ saved set-group-ID
該当するファイルシステムで
.Ar nosuid
オプションが有効な場合、または新しいプロセスファイルがインタプリタ
ファイルの場合、set-ID ビットは意味を持ちません。
ファイルの場合、ID 設定ビットは意味を持ちません。
実効 ID が変更された場合、システムコールのトレースは
無効になります。
.Pp
@ -207,14 +213,14 @@ char **argv, **envp;
処理が成功した呼び出しには戻るプロセスがありません。
.Fn execve
が呼び出しプロセスに返ってくる場合は
エラーが起きています。戻り値は -1 で、
エラーを示すためにグローバル変数
エラーが起きています。
戻り値は -1 で、エラーを示すためにグローバル変数
.Va errno
が設定されます
.Sh エラー
次の場合、
.Fn execve
関数は処理に失敗し、呼び出しプロセスに戻ります
関数は処理に失敗し、呼び出しプロセスに戻ります:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -248,7 +254,8 @@ char **argv, **envp;
以上の仮想メモリを必要とします。
.It Bq Er E2BIG
新しいプロセスの引数リストのバイト数がシステムの課した上限を
越えています。この上限は、
越えています。
この上限は、
.Xr sysctl 3
の MIB 変数
.Dv KERN_ARGMAX
@ -263,7 +270,7 @@ char **argv, **envp;
.Fa envp
が正しくないアドレスを指しています。
.It Bq Er EIO
ファイルシステムから読取る間に入出力エラーが発生しました。
ファイルシステムから読取る間に入出力エラーが発生しました。
.El
.Sh 警告
スーパユーザでないものに対して
@ -285,7 +292,7 @@ char **argv, **envp;
.Xr mount 8
.Sh 規格
.Fn execve
関数は、特定の状況において記述子 0, 1 そして/または 2 を
関数は、特定の状況において記述子 0, 1 そして / または 2 を
再度オープンする他は、
.St -p1003.1-2001
に適合しています。

View file

@ -61,7 +61,7 @@
を取ることができます。
.Bl -tag -width F_GETOWNX
.It Dv F_DUPFD
次のような新しい記述子を返します
次のような新しい記述子を返します:
.Pp
.Bl -bullet -compact -offset 4n
.It
@ -75,9 +75,8 @@
.It
同じアクセスモード (読取り、書込み、または読取りと書込み)
.It
同じファイルステータスフラグ (すなわち、
両方のファイル記述子が同じファイルステータス
フラグを共有)
同じファイル状態フラグ (すなわち、
両方のファイル記述子が同じファイル状態フラグを共有)
.It
close-on-exec フラグは、
.Xr execve 2
@ -97,7 +96,7 @@ close-on-exec
を実行してもオープンされたままになります。
そうでない場合、ファイルは
.Fn exec
の実行でクローズされます
の実行でクローズされます
.Fa ( arg
は無視されます)。
.It Dv F_SETFD
@ -110,11 +109,11 @@ close-on-exec
.Dv FD_CLOEXEC
です。
.It Dv F_GETFL
後述するように記述子のステータスフラグを取得します
後述するように記述子の状態フラグを取得します
.Fa ( arg
は無視されます)。
.It Dv F_SETFL
記述子ステータスフラグを
記述子状態フラグを
.Fa arg
で指定される値に設定します。
.It Dv F_GETOWN
@ -123,7 +122,8 @@ close-on-exec
シグナルと
.Dv SIGURG
シグナルを受信しているプロセス ID またはプロセスグループを取得
します。プロセスグループは負の値として返されます
します。
プロセスグループは負の値として返されます
.Fa ( arg
は無視されます)。
.It Dv F_SETOWN
@ -134,7 +134,8 @@ close-on-exec
シグナルを受信するように設定します。
プロセスグループは
.Fa arg
を負数にして与えることによって指定されます。そうでない場合、
を負数にして与えることによって指定されます。
そうでない場合、
.Fa arg
はプロセス ID として解釈されます。
.El
@ -142,7 +143,7 @@ close-on-exec
.Dv F_GETFL
および
.Dv F_SETFL
用のフラグは次のとおりです
用のフラグは次のとおりです:
.Bl -tag -width O_NONBLOCKX
.It Dv O_NONBLOCK
非ブロッキング入出力。
@ -171,19 +172,19 @@ close-on-exec
シグナルがプロセスグループに送信されるようにします。
.El
.Pp
問合せ型ファイルロックを行うためにいくつかのコマンドが利用できます。
これらのコマンドはすべて次の構造体で操作します
問合せ型ファイルロックを行うためにいくつかのコマンドが利用できます。
これらのコマンドはすべて次の構造体で操作します:
.ne 7v
.Bd -literal
struct flock {
off_t l_start; /* 開始位置のオフセット */
off_t l_len; /* len = 0 はファイル末尾までという意味 */
pid_t l_pid; /* ロック所有者 */
short l_type; /* ロックタイプ: 読取り/書込みなど */
short l_type; /* ロックタイプ: 読取り / 書込みなど */
short l_whence; /* l_start のタイプ */
};
.Ed
問合せ型レコードロックに利用できるコマンドは次のとおりです
問合せ型レコードロックに利用できるコマンドは次のとおりです:
.Bl -tag -width F_SETLKWX
.It Dv F_GETLK
3 番めの引数
@ -191,7 +192,8 @@ struct flock {
.Fa "struct flock"
(前記を参照) へのポインタと解釈して、それによって指定される
ロック記述をブロックする最初のロックを取得します。取り出された情報は、
ロック記述をブロックする最初のロックを取得します。
取り出された情報は、
.Fn fcntl
に渡された
.Fa flock
@ -240,8 +242,9 @@ struct flock {
.Pp
共有ロックがファイルのあるセグメントに設定されている場合、
他のプロセスはそのセグメントまたはその
一部に共有ロックを設定できます。共有ロックは、保護している
どの領域にも、他のプロセスが排他的ロックを設定するのを防止します。
一部に共有ロックを設定できます。
共有ロックは、保護しているどの領域にも、
他のプロセスが排他的ロックを設定するのを防止します。
ファイル記述子が読取りアクセスで開かれていない場合、
共有ロックの要求は処理を失敗します。
.Pp
@ -253,7 +256,7 @@ struct flock {
.Fa l_whence
の値は
.Dv SEEK_SET ,
.Dv SEEK_CUR ,
.Dv SEEK_CUR
または
.Dv SEEK_END
で、これらは相対オフセット
@ -303,8 +306,8 @@ struct flock {
要求で指定した領域内に既存のロックを保持しているとき、
要求から正常に戻る前に、
指定の領域内の各バイトについて以前の
ロックタイプが新しいロックタイプで置き換えられます。共有ロックと
排他的ロックのところで前述したように、
ロックタイプが新しいロックタイプで置き換えられます。
共有ロックと 排他的ロックのところで前述したように、
別のプロセスが指定の領域内にロックを保持しており、しかもそれらのロック
のタイプが要求で指定されたタイプと競合するとき、
.Dv F_SETLK
@ -322,10 +325,9 @@ struct flock {
がそのプロセスによって
クローズされたときに解除されます。
これは、サブルーチンライブラリがアクセスする可能性のあるファイル全てを
アプリケーションが認識している必要がある
ことを意味します。たとえば、パスワードファイルを更新する
アプリケーションが、更新を行なうために
パスワードファイルデータベースをロックし、
アプリケーションが認識している必要があることを意味します。
たとえば、パスワードファイルを更新するアプリケーションが、
更新を行うためにパスワードファイルデータベースをロックし、
レコードを取り出すために
.Xr getpwnam 3
を呼び出したとしましょう。
@ -378,7 +380,7 @@ struct flock {
.Sh 戻り値
処理が正常に完了した場合、返される値は
.Fa cmd
に応じて次のようになります
に応じて次のようになります:
.Bl -tag -width F_GETOWNX -offset indent
.It Dv F_DUPFD
新しいファイル記述子
@ -397,7 +399,7 @@ struct flock {
が設定されます。
.Sh エラー
.Fn fcntl
関数は、次の場合に失敗します
関数は、次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EAGAIN
引数
@ -413,8 +415,8 @@ struct flock {
.Pq Dv F_WRLCK
で、ロックされるはずのファイルの
セグメントは既に別のプロセスによって排他的に
ロックされています。または、タイプが排他的なロックで、
ロックされるファイルのセグメントの一部が
ロックされています。
または、タイプが排他的なロックで、ロックされるファイルのセグメントの一部が
既に別のプロセスによって共有ロックまたは排他的ロックされています。
.It Bq Er EBADF
.Fa fd

View file

@ -65,7 +65,7 @@
.Fa fhp
が参照するファイルを
.Fa flags
で指定にしたがって読み出し / 書き込み / 読み書き用にオープンし、
で指定にしたがって読取り / 書込み / 読み書き用にオープンし、
呼び出したプロセスにファイル記述子を返します。
.Fa flags
は、
@ -104,7 +104,7 @@
.Fn fhopen ,
.Fn fhstat ,
.Fn fhstatfs
は次のエラーを返します
は次のエラーを返します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fn fhopen
@ -128,7 +128,8 @@
.Fn fhstatfs
.Nx 1.5
で最初に登場しました。Alfred Perlstein が
で最初に登場しました。
Alfred Perlstein が
.Fx 4.0
に移植しました。
.Sh 作者

View file

@ -81,8 +81,8 @@ flock()
ロックと
.Em 排他的
ロックという 2 つのタイプのロックを提供します。
いつでも複数の共有ロックを 1 つのファイルに適用できます。しかし、
同時に 1 つのファイルに複数の排他的ロック、
いつでも複数の共有ロックを 1 つのファイルに適用できます。
しかし、同時に 1 つのファイルに複数の排他的ロック、
または共有ロックと排他的ロックの両方を適用することはできません。
.Pp
適切なロックのタイプを指定するだけで、共有ロックは排他的ロックに
@ -95,12 +95,13 @@ flock()
解放した後かもしれません)。
.Pp
既にロックされているオブジェクトについてロックを要求すると、
ロックが獲得できるまで呼び出し側はブロックされます。ただし
ロックが獲得できるまで呼び出し側はブロックされます。
ただし
.Dv LOCK_NB
.Fa operation
に含まれる場合はブロックされません。代わりに呼び出しが失敗し、
エラー
に含まれる場合はブロックされません。
代わりに呼び出しが失敗し、エラー
.Er EWOULDBLOCK
が返されます。
.Sh
@ -112,9 +113,10 @@ flock()
.Xr fork 2
によって複製されたファイル記述子は、
ロックの複数のインスタンスとはならずに、1 つのロックへの複数の
参照になります。あるファイルについてのロックを保持しているプロセスが
フォークし、子プロセスが明示的にその
ファイルをアンロックする場合、親プロセスはそのロックを失います。
参照になります。
あるファイルについてのロックを保持しているプロセスがフォークし、
子プロセスが明示的にそのファイルをアンロックする場合、
親プロセスはそのロックを失います。
.Pp
ロックを待ってブロックしているプロセスはシグナルで起こされるかもしれません。
.Sh 戻り値

View file

@ -61,15 +61,15 @@
子プロセスは、専用の、親の記述子のコピーを持ちます。
それらの記述子は下層の同じオブジェクトを参照します。
つまり子と親の間で、たとえばファイルオブジェクト内の
ファイルポインタが共有されます。そのため
子プロセスの記述子への
ファイルポインタが共有されます。
そのため子プロセスの記述子への
.Xr lseek 2
が、その後の親による
.Xr read 2
または
.Xr write 2
に影響を及ぼします。この記述子コピーは、
新しく作成されたプロセス用の標準入出力を確立するために、
に影響を及ぼします。
この記述子コピーは、新しく作成されたプロセス用の標準入出力を確立するために、
およびパイプをセットアップするために、シェルによっても使用されます。
.It
子プロセスのリソース使用状況は 0 に設定されます。
@ -91,10 +91,11 @@
.Sh エラー
次の場合に
.Fn fork
関数は処理に失敗し、子プロセスは作成されません
関数は処理に失敗し、子プロセスは作成されません:
.Bl -tag -width Er
.It Bq Er EAGAIN
実行中のプロセスの合計数がシステムの限界を超えます。限界値は
実行中のプロセスの合計数がシステムの限界を超えます。
限界値は
.Xr sysctl 3
の MIB 変数の
.Dv KERN_MAXPROC
@ -102,8 +103,8 @@
実際には限界はこれより 10 個少なくなります)。
.It Bq Er EAGAIN
ユーザがスーパユーザでなく、
1 人のユーザによって実行中のプロセスの合計数にシステムが課す
限界を越えます。限界は
1 人のユーザによって実行中のプロセスの合計数が、システムの限界を越えます。
限界は
.Xr sysctl 3
の MIB 変数の
.Dv KERN_MAXPROCPERUID
@ -111,7 +112,7 @@
.It Bq Er EAGAIN
ユーザがスーパユーザでなく、リソースパラメータの
.Dv RLIMIT_NPROC
に対応するソフトリソース限界を越えます
に対応するソフトリソース限界を越えます
.Pf ( Xr getrlimit 2
を参照)。
.It Bq Er ENOMEM

View file

@ -56,12 +56,13 @@
.Pp
.Fn fsync
は、ファイルが既知の状態にあることを要求するプログラムによって
使用される必要があります。たとえば、簡単なトランザクション機能の構築です。
使用される必要があります。
たとえば、簡単なトランザクション機能の構築です。
.Sh 戻り値
.Rv -std fsync
.Sh エラー
.Fn fsync
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EBADF
.Fa fd

View file

@ -58,19 +58,20 @@
が参照するディレクトリから
.Fa buf
が指すバッファ内に、ファイルシステムに独立なフォーマットの
ディレクトリエントリを読取ります。
ディレクトリエントリを読取ります。
最高で
.Fa nbytes
までのデータが転送されます。
.Fa nbytes
引数は、ファイルに対応するブロックサイズ以上である必要があります。
.Xr stat 2
を参照してください。このサイズより小さいバッファでは、
を参照してください。
このサイズより小さいバッファでは、
これらの関数をサポートしない可能性のあるファイルシステムがあります。
.Pp
バッファ内のデータは
.Em dirent
構造体の連続で、それぞれ次のエントリが入っています
構造体の連続で、それぞれ次のエントリが入っています:
.Bd -literal -offset indent
u_int32_t d_fileno;
u_int16_t d_reclen;
@ -87,18 +88,17 @@ char d_name[MAXNAMELEN + 1]; /*
.Fa d_fileno
を持ちます。
.Fa d_reclen
エントリは、ディレクトリレコードの
長さ (バイト単位) です。
エントリは、ディレクトリレコードの長さ (バイト単位) です。
.Fa d_type
エントリは、ディレクトリレコードが指すファイルのタイプです。
ファイルタイプの値は
.Fa <sys/dirent.h>
内に定義されます。
.Fa d_name
エントリにはヌルで終端されたファイル名が
入っています。
エントリにはヌル文字で終わるファイル名が入っています。
.Fa d_namlen
エントリは、ヌルバイトを除いたファイル名の長さを示します。それゆえ、
エントリは、ヌルバイトを除いたファイル名の長さを示します。
それゆえ、
.Fa d_name
の実際のサイズは 1 から
.Dv MAXNAMELEN
@ -109,13 +109,14 @@ char d_name[MAXNAMELEN + 1]; /*
.Fa d_reclen
エントリは、
.Fa dirent
構造体の開始点から次の構造体
がある場合はその構造体へのオフセットとして使用されます。
構造体の開始点から次の構造体がある場合は
その構造体へのオフセットとして使用されます。
.Pp
実際に転送されたバイト数が返されます。
.Fa fd
に関連づけられた現在の位置を示すポインタは、
エントリの次のブロックに設定されます。ポインタは
エントリの次のブロックに設定されます。
ポインタは
.Fn getdirentries
または
.Fn getdents
@ -123,9 +124,9 @@ char d_name[MAXNAMELEN + 1]; /*
ディレクトリの終わりに到達した場合は、値 0 が返されます。
.Pp
.Fn getdirentries
関数は、読み込まれたブロック位置を
関数は、読み取られたブロック位置を
.Fa basep
が指す場所に書込みます。
が指す場所に書込みます。
代わりに
.Xr lseek 2
によって現在の位置ポインタを設定、取得できます。
@ -143,7 +144,7 @@ char d_name[MAXNAMELEN + 1]; /*
が設定されます。
.Sh エラー
.Fn getdirentries
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EBADF
.Fa fd

View file

@ -56,15 +56,14 @@
.Rv -std getfh
.Sh エラー
.Fn getfh
は以下の 1 つでも真の場合、処理に失敗します
は以下の 1 つでも真の場合、処理に失敗します:
.Bl -tag -width Er
.It Bq Er ENOTDIR
.Fa path
の構成要素中にディレクトリ以外のものが含まれています。
.It Bq Er ENAMETOOLONG
.Fa path
の構成要素が 255 文字を越えているか、
または
の構成要素が 255 文字を越えているか、または
.Fa path
が 1023 文字を越えています。
.It Bq Er ENOENT

View file

@ -89,7 +89,7 @@ struct statfs {
.Bl -tag -width MNT_ASYNCHRONOUS
.It Dv MNT_RDONLY
ファイルシステムは読取り専用としてマウントされています。
スーパユーザも書込みすることはできません。
スーパユーザも書き込むことはできません。
.It Dv MNT_NOEXEC
そのファイルシステム上のファイルを実行することはできません。
.It Dv MNT_NOSUID
@ -151,13 +151,13 @@ struct statfs {
.Sh 戻り値
正常に完了すると
.Fa fsstat
構造体の数が返されます。そうでない場合は -1 が返され、エラーを示すために
グローバル変数
構造体の数が返されます。
そうでない場合は -1 が返され、エラーを示すためにグローバル変数
.Va errno
が設定されます。
.Sh エラー
.Fn getfsstat
は以下の 1 つでも真の場合、処理に失敗します
は以下の 1 つでも真の場合、処理に失敗します:
.Bl -tag -width Er
.It Bq Er EFAULT
.Fa buf

View file

@ -59,10 +59,10 @@
.Pp
実グループ ID はプログラムを起動したユーザのグループです。
実効グループ ID は
.Dq Em set-group-ID
.Dq Em グループ ID 設定
モードプロセスの実行の間にプロセスに追加のパーミッションを与えるので、
.Fn getgid
は呼び出しプロセスの real-user-id を知るために使用されます。
は呼び出しプロセスの実ユーザ ID を知るために使用されます。
.Sh エラー
.Fn getgid
関数と
@ -79,4 +79,4 @@
.Fn getegid
関数は
.St -p1003.1-90
準拠しています。
適合しています。

View file

@ -77,7 +77,7 @@
に保存されます。
.Sh エラー
.Fn getgroups
で起こり得るエラーは次のとおりです
で起こり得るエラーは次のとおりです:
.Bl -tag -width Er
.It Bq Er EINVAL
引数

View file

@ -71,7 +71,7 @@
.Pp
タイマの値は
.Fa itimerval
構造体によって定義されます
構造体によって定義されます:
.Bd -literal -offset indent
struct itimerval {
struct timeval it_interval; /* タイマインターバル */
@ -84,8 +84,7 @@ struct itimerval {
.Fa it_interval
が 0 でない場合、それはタイマが時間切れになるときに
.Fa it_value
を再設定するのに
使用される値を指定します。
を再設定するのに使用される値を指定します。
.Fa it_value
を 0 に設定すると、タイマは
.Fa it_interval
@ -99,14 +98,15 @@ struct itimerval {
この精度に切り上げられます。
.Pp
.Dv ITIMER_REAL
タイマはリアルタイムで減少していきます。このタイマが時間切れになると
タイマはリアルタイムで減少していきます。
このタイマが時間切れになると
.Dv SIGALRM
シグナルが配信されます。
.Pp
.Dv ITIMER_VIRTUAL
タイマはプロセス仮想時間で減少します。
このタイマが減るのはプロセスが実行中の
ときだけです。時間切れになるときに
このタイマが減るのはプロセスが実行中のときだけです。
時間切れになるときに
.Dv SIGVTALRM
シグナルが配信されます。
.Pp
@ -145,7 +145,7 @@ struct itimerval {
.Fn getitimer
.Fn setitimer
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EFAULT
.Fa value

View file

@ -40,7 +40,7 @@
.Nm getlogin ,
.Nm getlogin_r ,
.Nm setlogin
.Nd ログイン名を取得 / 設定
.Nd ログイン名を取得 / 設定する
.Sh ライブラリ
.Lb libc
.Sh 書式
@ -56,8 +56,7 @@
.Fn getlogin
ルーチンは、
.Fn setlogin
で設定した現在のセッションに対応する
ユーザのログイン名を返します。
で設定した現在のセッションに対応するユーザのログイン名を返します。
通常、名前はセッションが作成された時点でログインシェルに対応し、
ログインシェルから派生する全てのプロセスに継承されます
(これらのプロセスが別のユーザ ID を想定している場合、たとえば、
@ -67,12 +66,12 @@
.Fn getlogin_r
.Fn getlogin
と同様のサービスを提供しますが、
呼び出し側は結果を保持するための長さ
と同様のサービスを提供しますが、呼び出し側は結果を保持するための長さ
.Fa len
バイトのバッファ
.Fa name
を用意しなければなりません。バッファは少なくとも
を用意しなければなりません。
バッファは少なくとも
.Dv MAXLOGNAME
バイトの長さがあるべきです。
.Pp
@ -83,8 +82,7 @@
この呼び出しはスーパユーザに制限されており、
新しいセッションがユーザのために
作成されるときにだけ使用されるのが普通です
(たとえば、ログイン時、またはリモートシェルが
起動されるときです)。
(たとえば、ログイン時、またはリモートシェルが起動されるときです)。
.Pp
.Em 注釈 :
セッションごとに 1 つのログイン名しかありません。
@ -96,8 +94,7 @@
.Em 非常に
重要です。
.Fn setsid
システムコール
を行なうのがこれをする
システムコールを行うのがこれをする
.Em 唯一の
方法です。
.Fn daemon
@ -115,10 +112,9 @@
.Pp
親プロセスがいったん
.Fn setsid
呼び出しを行なえば、セッションリーダでない
そのプロセスの子が
呼び出しを行えば、セッションリーダでないそのプロセスの子が
.Fn setlogin
を行うことも受け入れられますが、親を含めてセッション内のすべての
を行うことも受け入れられますが、親を含めてセッション内のすべての
プロセスが同時にログイン名を変更されることに注意してください。
.Pp
これは特権を継承する従来の UNIX の動作と同じではありません。
@ -129,28 +125,30 @@
プログラマが適切な注意を払うものだと仮定しています。
.Sh 戻り値
.Fn getlogin
の呼び出しが成功すると、静的バッファ内のヌルで終端された文字列への
の呼び出しが成功すると、静的バッファ内のヌル文字で終わる文字列への
ポインタが返されます。
名前が設定されていない場合は、
.Dv NULL
が返されます。
.Fn getlogin_r
の呼び出しが成功すると、0 が返されます。失敗するとエラー番号
が返されます。
の呼び出しが成功すると、0 が返されます。
失敗するとエラー番号が返されます。
.Pp
.Rv -std setlogin
.Sh エラー
これらの呼び出しによって以下のエラーが返される可能性があります
これらの呼び出しによって以下のエラーが返される可能性があります:
.Bl -tag -width Er
.It Bq Er EFAULT
.Fa name
パラメータで無効なアドレスを与えました。
.It Bq Er EINVAL
.Fa name
パラメータが長すぎる文字列を指しています。ログイン名は
パラメータが長すぎる文字列を指しています。
ログイン名は
.Pf ( Ao Pa sys/param.h Ac )
.Dv MAXLOGNAME
文字までに制限されます。現時点ではヌルを含めて 17 文字です。
文字までに制限されます。
現時点ではヌルを含めて 17 文字です。
.It Bq Er EPERM
ログイン名を設定しようとした呼び出し元が
スーパユーザではありませんでした。
@ -163,15 +161,14 @@
.Sh バグ
システムの以前のバージョンでは、
.Fn getlogin
はプロセスがログイン端末に対応していない限り
処理に失敗しました。現在では、
はプロセスがログイン端末に対応していない限り処理に失敗しました。
現在では、
.Pf ( Fn setlogin
を使用して) プロセスに制御端末がないときでも
getlogin は正常に完了します。初期のバージョンでは、
を使用して) プロセスに制御端末がないときでも getlogin は正常に完了します。
初期のバージョンでは、
.Fn getlogin
が返す値はユーザ ID をチェックせずには
信頼することができませんでした。
移植性の高いプログラムはおそらくまだこのチェックを行なっているはずです。
が返す値はユーザ ID をチェックせずには信頼することができませんでした。
移植性の高いプログラムはおそらくまだこのチェックを行っているはずです。
.Sh 歴史
.Fn getlogin
関数は
@ -180,7 +177,7 @@ getlogin
.Fn getlogin_r
の戻り値は
.St -p1003.1-96
準拠するために
適合するために
.Fx
の初期のバージョンから変更されました。
.Sh 規格
@ -189,4 +186,4 @@ getlogin
.Fn getlogin_r
.St -p1003.1-96
準拠しています。
適合しています。

View file

@ -54,14 +54,14 @@
.Fa namelen
パラメータには、
.Fa name
が指す空間のを示す値を入れておく必要があります。
が指す空間の大きさを示す値を入れておく必要があります。
戻る時に、これには返された名前の
実際のサイズ (バイト単位) が入れられます。
準備されたバッファが小さすぎる場合、名前は切り捨てられます。
.Sh 戻り値
.Rv -std getpeername
.Sh エラー
以降の場合を除いて呼び出しは処理に成功します
以降の場合を除いて呼び出しは処理に成功します:
.Bl -tag -width Er
.It Bq Er EBADF
引数

View file

@ -53,8 +53,7 @@
.Fn getpgrp
によって返されます。
.Fa pid
によって識別される
プロセスのプロセスグループは
によって識別されるプロセスのプロセスグループは
.Fn getpgid
によって返されます。
.Fa pid
@ -65,18 +64,18 @@
プロセスグループはシグナルの配信用に使用され、
また端末によって入力の要求を調整するのにも使用されます。
端末と同じプロセスグループを持つ (1 つ以上の) プロセスは
フォアグラウンドであり読み取りできます。一方でその他のプロセスが
読み取ろうした場合はシグナルによってブロックさせられます。
フォアグラウンドであり読み取りできます。
一方で、その他のプロセスが読み取ろうした場合は、
シグナルによってブロックさせられます。
.Pp
このように、この呼び出しは
.Xr csh 1
のようにジョブ制御のためにプロセスグループの作成を
うプログラムによって使用されます。
行うプログラムによって使用されます。
.Fn tcgetpgrp
呼び出しと
.Fn tcsetpgrp
呼び出しは制御端末のプロセスグループ
を取得/設定するのに使用されます。
呼び出しは制御端末のプロセスグループを取得 / 設定するのに使用されます。
.Sh 戻り値
.Fn getpgrp
呼び出しは、常に成功します。
@ -109,14 +108,14 @@
.Fn getpgrp
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 互換性
このバージョンの
.Fn getpgrp
は、
.Fa "pid_t pid"
引数を取らないという点で過去の Berkeley バージョンとは
異なっています。互換性は
引数を取らないという点で過去の Berkeley バージョンとは異なっています。
互換性は
.St -p1003.1-90
への対応により失われてしまいました。
.Pp
@ -129,7 +128,8 @@
関数を備えています。
この関数はジョブ制御をサポートするのに使用されますが、
既知のジョブ制御をする全てのシェルは、必ずこの関数に
呼び出しプロセスを指定しています。そのためより簡単な
呼び出しプロセスを指定しています。
そのためより簡単な
.At V
.Fn getpgrp
で十分であり、

View file

@ -74,7 +74,7 @@ ID
.Fn getppid
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn getpid
関数は

View file

@ -39,7 +39,7 @@
.Sh 名称
.Nm getpriority ,
.Nm setpriority
.Nd プログラムスケジュール優先順位を取得 / 設定
.Nd プログラムスケジュール優先順位を取得 / 設定する
.Sh ライブラリ
.Lb libc
.Sh 書式
@ -88,8 +88,8 @@
呼び出しは、指定のプロセスのいずれかが享受する最高の優先順位を
返してきます (最も小さい数値です)。
.Fn setpriority
呼び出しは、指定されたすべてのプロセスの優先順位を指定の値に
設定します。スーパユーザだけが優先順位を低くできます。
呼び出しは、指定されたすべてのプロセスの優先順位を指定の値に設定します。
スーパユーザだけが優先順位を低くできます。
.Sh 戻り値
.Fn getpriority
は処理を正しく完了しても値 -1 を返すことがあるので、
@ -103,14 +103,14 @@
.Fn getpriority
.Fn setpriority
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er ESRCH
指定された
.Fa which
.Fa who
の値を使用してプロセスが見つかりませんでした。
の値を使用しているプロセスが見つかりませんでした。
.It Bq Er EINVAL
.Fa which
@ -124,7 +124,7 @@
.Bl -tag -width Er
上記のエラーだけでなく、
.Fn setpriority
は次の場合に失敗します
は次の場合に失敗します:
.It Bq Er EPERM
プロセスは検出されたものの、その実効 ID も実ユーザ ID の
どちらも、呼び出し側の実効ユーザ ID に一致しませんでした。

View file

@ -59,48 +59,49 @@
呼び出しで設定できます。
.Pp
.Fa resource
パラメータは次のうちの 1 つです
パラメータは次のうちの 1 つです:
.Bl -tag -width RLIMIT_FSIZEAA
.It Li RLIMIT_CORE
作成できる
.Xr core 5
ファイルの最大サイズ (バイト単位)
ファイルの最大サイズ (バイト単位)
.It Li RLIMIT_CPU
各プロセスが使用する CPU 時間の最大量 (秒単位)
各プロセスが使用する CPU 時間の最大量 (秒単位)
.It Li RLIMIT_DATA
プロセス用のデータセグメントの最大サイズ (バイト単位)。
これは、プログラムがそのブレークを
.Xr sbrk 2
システムコールでどのくらい遠くまで延長できるかを定義します。
.It Li RLIMIT_FSIZE
作成できるファイルの最大サイズ (バイト単位)
作成できるファイルの最大サイズ (バイト単位)
.It Li RLIMIT_MEMLOCK
プロセスが
.Xr mlock 2
関数を使用して、プロセスをメモリにロックできる
最大サイズ (バイト単位)。
.It Li RLIMIT_NOFILE
このプロセスが開けるファイルの最大数
このプロセスが開けるファイルの最大数
.It Li RLIMIT_NPROC
このユーザ ID が同時に利用できるプロセスの最大数
このユーザ ID が同時に利用できるプロセスの最大数
.It Li RLIMIT_RSS
増加させて良いプロセスの常駐セットサイズの最大サイズ (バイト単位)。
これはプロセスに与えられる物理メモリの量に制限を課します。
メモリが逼迫してシステムがメモリを回収する際に、
宣言された常駐セットサイズを越えるプロセスを回収対象として選択します。
.It Li RLIMIT_STACK
プロセスのスタックセグメントの最大サイズ (バイト数)。これによって、
プロセスのスタックセグメントの最大サイズ (バイト数)。
これによって、
プログラムのスタックセグメントをどのくらい延長できるか定義できます。
スタック延長はシステムによって自動的に実行されます。
.It Li RLIMIT_SBSIZE
このユーザが使用できるソケットバッファの最大サイズ (バイト単位)。
このサイズは、ユーザがいつでも保持できるネットワークメモリ量を
制限しますので、したがって mbuf の使用量も制限します。
制限します。
したがって mbuf の使用量も制限されます。
.El
.Pp
リソースリミットはソフトリミットおよびハードリミットとして
指定されます。ソフトリミットを越えた場合、
プロセスはシグナルを受信する可能性があります
リソースリミットはソフトリミットおよびハードリミットとして指定されます。
ソフトリミットを越えた場合、プロセスはシグナルを受信する可能性があります
(例えば、CPU 時間またはファイルサイズを越えた場合) が、
ハードリミットに到達する (またはリソースリミットを修正する)
まで実行を継続することはできます。
@ -142,8 +143,8 @@ struct rlimit {
データまたはスタック空間を延長することを拒絶します。
データ空間リミットに到達すると
.Xr brk 2
呼び出しは処理に失敗します。スタックリミットに到達すると、
プロセスはセグメント例外
呼び出しは処理に失敗します。
スタックリミットに到達すると、プロセスはセグメント例外
.Pq Dv SIGSEGV
を受信します。
シグナルスタックを使用するハンドラによって
@ -152,8 +153,8 @@ struct rlimit {
プロセスのソフトリミットより大きなファイルを
作成するファイルの入出力操作をすると書込みは失敗し、シグナル
.Dv SIGXFSZ
が生成されます。通常、これによってプロセスは終了しますが、
捕捉することもできます。
が生成されます。
通常、これによってプロセスは終了しますが、捕捉することもできます。
CPU 時間のソフトリミットを越えたとき、シグナル
.Dv SIGXCPU
が障害を起こしているプロセスに送信されます。
@ -163,7 +164,7 @@ CPU
.Fn getrlimit
および
.Fn setrlimit
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EFAULT
.Fa rlp

View file

@ -82,22 +82,23 @@ struct rusage {
};
.Ed
.Pp
フィールドは次のように解釈されます
フィールドは次のように解釈されます:
.Bl -tag -width ru_minfltaa
.It Fa ru_utime
ユーザモードで処理を実行するのに費やした時間の合計
ユーザモードで処理を実行するのに費やした時間の合計
.It Fa ru_stime
(1 つ以上の) プロセスのためにシステムが処理を実行するのに
消費した時間の合計
消費した時間の合計
.It Fa ru_maxrss
使用された常駐セットサイズの最大値 (キロバイト単位)
使用された常駐セットサイズの最大値 (キロバイト単位)
.It Fa ru_ixrss
他のプロセスとの間でも共有されていたテキストセグメント
によって使用されたメモリ量の
.Dq 合計
値。
この値は「キロバイト * 実行のチック数」の単位で表現されます。
チックは統計用のクロックチックです。統計用クロックの周波数は
チックは統計用のクロックチックです。
統計用クロックの周波数は
.Fn sysconf _SC_CLOCK_TCK
チック / 秒です。
.It Fa ru_idrss
@ -113,21 +114,21 @@ struct rusage {
.Dq 再生
することで回避されます。
.It Fa ru_majflt
入出力アクティビティを必要としたサービスを受けたページフォルトの数
入出力アクティビティを必要としたサービスを受けたページフォルトの数
.It Fa ru_nswap
プロセスがメインメモリから
.Dq スワップ
された回数
された回数
.It Fa ru_inblock
ファイルシステムが入力を実行する必要があった回数
ファイルシステムが入力を実行する必要があった回数
.It Fa ru_oublock
ファイルシステムが出力を実行する必要があった回数
ファイルシステムが出力を実行する必要があった回数
.It Fa ru_msgsnd
送信された IPC メッセージの数
送信された IPC メッセージの数
.It Fa ru_msgrcv
受信した IPC メッセージの数
受信した IPC メッセージの数
.It Fa ru_nsignals
配信されたシグナルの数
配信されたシグナルの数
.It Fa ru_nvcsw
タイムスライスが完了する前に、プロセスが自発的にプロセッサを
放棄した結果として発生したコンテキストスイッチの回数
@ -148,7 +149,7 @@ struct rusage {
.Rv -std getrusage
.Sh エラー
.Fn getrusage
関数は次の場合に処理を失敗します
関数は次の場合に処理を失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa who

View file

@ -40,8 +40,7 @@
.Fn getsid
.Fa pid
によって識別されるプロセスのセッション ID を
返します。
によって識別されるプロセスのセッション ID を返します。
.Fa pid
が 0 の場合、
.Fn getsid
@ -55,7 +54,7 @@
が設定されます。
.Sh エラー
.Fn getsid
は次の場合を除いて正常に完了します
は次の場合を除いて正常に完了します:
.Bl -tag -width Er
.It Bq Er ESRCH
.Fa pid

View file

@ -54,12 +54,12 @@
.Fa namelen
パラメータは、
.Fa name
が指す空間のを示すように初期化しておく必要があります。
が指す空間の大きさを示すように初期化しておく必要があります。
戻る時には返された名前の実際のサイズ (バイト単位) が入ります。
.Sh 戻り値
.Rv -std getsockname
.Sh エラー
呼び出しは、次の場合を除いて正常に完了します
呼び出しは、次の場合を除いて正常に完了します:
.Bl -tag -width Er
.It Bq Er EBADF
引数

View file

@ -123,8 +123,8 @@
.Ao Pa sys/socket.h Ac
で定義された
.Fa struct linger
パラメータを使用します。これは、
目的の状態のオプションとリンガーインターバル (後述) を指定します。
パラメータを使用します。
これは、目的の状態のオプションとリンガ間隔 (後述) を指定します。
.Dv SO_SNDTIMEO
.Dv SO_RCVTIMEO
@ -190,12 +190,12 @@
.Dv SO_LINGER
は送信されていないメッセージがソケットの待ち行列にあり、しかも
.Xr close 2
が実行される時に行われる処置を制御します。
が実行される時に行われる処置を制御します。
ソケットがデータの信頼できる配信を確約し、しかも
.Dv SO_LINGER
が設定されている場合、
データを送信できるまで または情報を配信できない
(リンガーインターバルと呼ばれるタイムアウト時間は、
(リンガ間隔と呼ばれるタイムアウト時間は、
.Dv SO_LINGER
が要求されるときに
.Fn setsockopt
@ -211,11 +211,13 @@
オプション
.Dv SO_BROADCAST
は、ソケット上でブロードキャストデータグラムを送信するパーミッションを
要求します。ブロードキャストは、システムの初期バージョンでは特権操作でした。
要求します。
ブロードキャストは、システムの初期バージョンでは特権操作でした。
バンド外のデータをサポートするプロトコルで、
.Dv SO_OOBINLINE
オプションは、バンド外のデータが受信された順番で通常の
データ入力待ち行列に配置されることを要求します。そして、これは
データ入力待ち行列に配置されることを要求します。
そして、これは
.Dv MSG_OOB
フラグなしに
.Xr recv 2
@ -232,30 +234,33 @@
バッファのサイズは、高ボリューム接続のために増加することができますし、
着信データの可能なバックログを
制限するために減少させることもできます。
システムはこれらの値について 1 つの絶対最大値を設定します。この
最大値は
システムはこれらの値について 1 つの絶対最大値を設定します。
この最大値は
.Xr sysctl 3
MIB 変数
.Dq Li kern.ipc.maxsockbuf
によってアクセスできます。
.Pp
.Dv SO_SNDLOWAT
は出力操作に最小カウントを設定するオプションです。ほとんどの出力操作は、
送信用のプロトコルにデータを配信し、フロー制御のためにブロックしながら
呼び出しによって与えられたすべてのデータを処理します。
は出力操作に最小カウントを設定するオプションです。
ほとんどの出力操作は、送信用のプロトコルにデータを配信し、
フロー制御のためにブロックしながら呼び出しによって与えられた
すべてのデータを処理します。
ノンブロッキング出力操作は、ブロックなしのフロー制御に従って
許容される限界までデータを処理しますが、フロー制御が
最低基準値または要求全体のいずれか小さい方を処理することを許容しない
場合はデータを処理しません。ソケットへの書込み能力を試験する
場合はデータを処理しません。
ソケットへの書込み能力を試験する
.Xr select 2
操作が真で返るのは、最低基準値を処理できる場合だけです。
.Dv SO_SNDLOWAT
のデフォルト値はネットワーク効率性のために
適切なサイズ (多くの場合は 1024) に設定されます。
.Dv SO_RCVLOWAT
は入力操作の最小カウントを設定するオプションです。一般に、受信呼び出しは、
いくらかの (0 でない) データが受信されるまでブロックしてから、
利用できる量または要求された量のいずれか少ない方とともに戻ります。
は入力操作の最小カウントを設定するオプションです。
一般に、受信呼び出しは、いくらかの (0 でない) データが
受信されるまでブロックしてから、利用できる量または
要求された量のいずれか少ない方とともに戻ります。
.Dv SO_RCVLOWAT
のデフォルト値は 1 です。
.Dv SO_RCVLOWAT
@ -271,19 +276,21 @@ MIB
これは、出力操作完了の待機を制限するために使用される秒数、
マイクロ秒数を
.Fa struct timeval
パラメータで指定します。送信操作が
指定された時間以上ブロックされた場合、部分的なカウントで戻るか、
パラメータで指定します。
送信操作が指定された時間以上ブロックされた場合、部分的なカウントで戻るか、
またはデータが送信されていない場合はエラー
.Er EWOULDBLOCK
で戻ります。現在の実装では、このタイマは追加の各データがプロトコルに
で戻ります。
現在の実装では、このタイマは追加の各データがプロトコルに
配信されるたびに再起動され、これはサイズが出力用の最低基準値から
最高基準値の範囲に至る出力部分に適用されることを意味します。
.Dv SO_RCVTIMEO
は入力操作についてタイムアウト値を設定するオプションです。
これは入力操作完了の待機を制限するために使用される秒数、マイクロ秒数を
.Fa struct timeval
パラメータで指定します。現在の実装では、このタイマは
追加のデータがプロトコルによって受信されるたびに再起動されるので、
パラメータで指定します。
現在の実装では、このタイマは追加のデータがプロトコルによって
受信されるたびに再起動されるので、
制限は実際には休止期間のタイマとなります。
追加のデータを受信することなく受信操作がこれだけの時間について
ブロックされた場合、短いカウントで戻るか、
@ -294,8 +301,8 @@ MIB
.Dv SO_ACCEPTFILTER
は、ソケット上に
.Xr accept_filter 9
を置きます。これにより、待ち受けしているストリームソケットに
入ってくる接続が
を置きます。
これにより、待ち受けしているストリームソケットに入ってくる接続が
.Xr accept 2
に渡される前にフィルタされることになります。
念のため繰り返します。
@ -315,7 +322,8 @@ struct accept_filter_arg {
.Fa optval
.Fa struct accept_filter_arg
を指さなくてはなりません。この構造体が
を指さなくてはなりません。
この構造体が
.Xr accept_filter 9
を選択、設定します。
.Fa af_name
@ -341,8 +349,8 @@ NULL
.Dv SO_TYPE
では
.Dv SOCK_STREAM
のようなソケットのタイプが返ります。これは
スタートアップ時にソケットを継承するようなサーバに便利です。
のようなソケットのタイプが返ります。
これはスタートアップ時にソケットを継承するようなサーバに便利です。
.Dv SO_ERROR
はソケット上で延期中のエラーを返し、エラー状態をクリアします。
これは接続されたデータグラムソケット上の非同期的エラーをチェックしたり、
@ -350,7 +358,7 @@ NULL
.Sh 戻り値
.Rv -std
.Sh エラー
呼び出しは次の場合を除いて正常です
呼び出しは次の場合を除いて正常です:
.Bl -tag -width Er
.It Bq Er EBADF
引数

View file

@ -58,7 +58,8 @@
.Fn gettimeofday
呼び出しから得られ、
.Fn settimeofday
呼び出しで設定されます。時刻は 1970 年 1 月 1 日の深夜 (0 時)
呼び出しで設定されます。
時刻は 1970 年 1 月 1 日の深夜 (0 時)
からの秒数とマイクロ秒数で表現されます。
システムクロックの分解能はハードウェアで決まり、
時刻は継続的または
@ -74,11 +75,11 @@
.Fa tzp
の指す構造体は
.Ao Pa sys/time.h Ac
内に次のように定義されています
内に次のように定義されています:
.Pp
.Bd -literal
struct timeval {
long tv_sec; /* 1970年1月1日からの秒数 */
long tv_sec; /* 1970 年 1 月 1 日からの秒数 */
long tv_usec; /* およびマイクロ秒数 */
};
@ -90,7 +91,8 @@ struct timezone {
.Pp
.Fa timezone
構造体は、ローカル時間帯 (グリニッジから西向きに分単位で測定) と
フラグを含みます。フラグが 0 でない場合は、一年の適切な時期に
フラグを含みます。
フラグが 0 でない場合は、1 年の適切な時期に
夏時間がその地域に適用されることを示します。
.Pp
スーパユーザだけが時刻または時間帯を設定できます。
@ -107,7 +109,7 @@ struct timezone {
.Sh エラー
次のエラーコードが
.Va errno
に設定されます
に設定されます:
.Bl -tag -width Er
.It Bq Er EFAULT
引数アドレスが無効なメモリを参照しました。

View file

@ -57,7 +57,7 @@
.Pp
実ユーザ ID は、プログラムを起動したユーザの ID です。
実効ユーザ ID は、
.Dq Em set-user-ID
.Dq Em ユーザ ID 設定
モードプロセスの実行中にプロセスに追加のパーミッションを与えるので、
.Fn getuid
を使用して呼び出しプロセスの実ユーザ ID を把握します。
@ -78,7 +78,7 @@
.Fn getuid
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn getuid
関数と

View file

@ -44,7 +44,8 @@
.Fn i386_get_ioperm
は、プロセスの入出力ポート空間についてのパーミッションを
.Fa *enable
引数内に返します。ポートの範囲は
引数内に返します。
ポートの範囲は
.Fa start
で開始し、連続エントリの数が
.Fa *length
@ -64,7 +65,7 @@
.Fn i386_get_ioperm
.Fn i386_set_ioperm
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa start

View file

@ -53,8 +53,8 @@
.Fn i386_get_ldt
はプロセスの LDT の中にある i386 記述子のリストを返します。
.Fn i386_set_ldt
は現在のプロセスのための i386 記述子の
リストを、そのプロセスの LDT に設定します。
は現在のプロセスのための i386 記述子のリストを、
そのプロセスの LDT に設定します。
両方のルーチンは、開始するセレクタ番号の
.Fa start_sel
と、設定する記述子の入った、または記述子が返されるメモリの配列の
@ -70,9 +70,10 @@
.Aq Pa i386/segments.h .
.\".Fd <i386/segments.h>
.Ao Pa i386/segments.h Ac
内に定義されています。これらの構成要素は、アーキテクチャに対応して
ばらばらになったビットフィールドとして定義
されているので、それらを組み立てる際には注意を払う必要があります。
内に定義されています。
これらの構成要素は、アーキテクチャに対応して
ばらばらになったビットフィールドとして定義されているので、
それらを組み立てる際には注意を払う必要があります。
.Pp
これらの関数を使用するには、カーネルの設定ファイル中で
.Dq options USER_LDT
@ -82,15 +83,15 @@
.Fn i386_get_ldt
は現在 LDT 内にある記述子の数を返します。
.Fn i386_set_ldt
は最初のセレクタセットを返します。そうでない場合は -1 が返され、
エラーを示すためにグローバル変数
は最初のセレクタセットを返します。
そうでない場合は -1 が返され、エラーを示すためにグローバル変数
.Va errno
が設定されます。
.Sh エラー
.Fn i386_get_ldt
.Fn i386_set_ldt
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa start_sel

View file

@ -67,9 +67,8 @@ struct vm86_init_args {
は、vm86 割り込みを vm86 モードで処理する必要があるか、またはプロセスに
反映して戻される必要があるかどうかを決定するビットマップです。
.Em N 番め
のビットが設定されている場合、
割り込みはプロセスに反映されます。そうでない場合、
vm86 割り込みテーブルによってディスパッチされます。
のビットが設定されている場合、割り込みはプロセスに反映されます。
そうでない場合、 vm86 割り込みテーブルによってディスパッチされます。
.\" .It Dv VM86_SET_VME
.\" .It Dv VM86_GET_VME
.\" .It Dv VM86_INTCALL
@ -85,7 +84,7 @@ vm86
.Rv -std i386_vm86
.Sh エラー
.Fn i386_vm86
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
カーネルに vm86 サポートがないか、または無効な関数が指定されました。

View file

@ -44,16 +44,15 @@
.Sh 書式
.In errno.h
.Sh 解説
このセクションでは、システム
コール、エラー戻り、その他の共通な定義およびコンセプト
の概要について説明します。
このセクションでは、システムコール、エラー戻り、
その他の共通な定義およびコンセプトの概要について説明します。
.\".Pp
.\".Sy System call restart
.\".Pp
.\"<more later...>
.Sh 戻り値
ほとんどすべてのシステムコールが外部識別子 errno
によって参照されるエラー番号を備えています。
ほとんどすべてのシステムコールが外部識別子 errno によって参照される
エラー番号を備えています。
.Aq Pa sys/errno.h
内でこの識別子は次のように定義されています。
.Pp
@ -62,26 +61,25 @@
.Pp
.Va __error()
関数は、初期スレッド以外のスレッドについては、スレッドに固有な構造体の
フィールドを指すポインタを返します。初期スレッドと非スレッドプロセスの
場合、
フィールドを指すポインタを返します。
初期スレッドと非スレッドプロセスの場合、
.Va __error()
は、以前の定義と互換性のあるグローバル変数
.Va errno
を指すポインタを返します。
.Pp
システムコールは、エラーを検出すると、障害を示す整数値 (通常は -1)
を返し、それに応じて変数
システムコールは、エラーを検出すると、障害を示す整数値 (通常は -1) を返し、
それに応じて変数
.Va errno
を設定します。
<これにより、 -1 を受け取ったときに障害を解釈し、
<これにより、-1 を受け取ったときに障害を解釈し、
それに応じた行動をとることを可能にします。>
呼び出しが正常に完了した場合は
.Va errno
が設定されることはありません。
いったん設定されると、別のエラーが起きるまでそのままです。
これはエラーの後でだけ調べるべきです。
多くのシステムコールが
これらのエラー番号の意味を過重にしており、
多くのシステムコールがこれらのエラー番号の意味を過重にしており、
意味は呼び出しのタイプと状況に従って解釈する必要があることに注意してください。
.Pp
以降に示すのはエラーの完全なリストであり、これらの名前は
@ -97,15 +95,13 @@
限定された操作を実行しようとしました。
.It Er 2 ENOENT Em "No such file or directory"
「そのようなファイルまたはディレクトリはありません」
指定のパス名の構成要素が存在しないか、
またはパス名が空の文字列でした。
指定のパス名の構成要素が存在しないか、またはパス名が空の文字列でした。
.It Er 3 ESRCH Em "No such process"
「そのようなプロセスはありません」
指定のプロセス ID に対応するプロセスが見つかりませんでした。
.It Er 4 EINTR Em "Interrupted function call"
「関数呼び出しが割り込まれました」
割り込み可能な関数の実行中に、
非同期シグナル (たとえば、
割り込み可能な関数の実行中に、非同期シグナル (たとえば、
.Dv SIGINT
または
.Dv SIGQUIT )
@ -115,24 +111,19 @@
.It Er 5 EIO Em "Input/output error"
「入出力エラーです」
何らかの物理的な入力エラーまたは出力エラーが起きました。
このエラーは、
同じファイル記述子に対する操作が次に行なわれるまで報告されず、
後続のエラーによって失われる
(上書きされる) 可能性があります。
このエラーは、同じファイル記述子に対する操作が次に行われるまで報告されず、
後続のエラーによって失われる (上書きされる) 可能性があります。
.It Er 6 ENXIO Em "\&No such device or address"
「そのようなデバイスまたはアドレスがありません」
存在しないデバイスを参照している特殊ファイルへの入出力が行われたか、
存在しないデバイスを参照している特殊ファイルへの入出力が行われたか、
またはデバイスの制限を越えた要求が行われました。
このエラーは、
テープドライブがオンラインでない場合や、またはディスク
パックがドライブにロードされていない場合など
にも発生する可能性があります。
このエラーは、テープドライブがオンラインでない場合や、
またはディスクパックがドライブにロードされていない場合などにも
発生する可能性があります。
.It Er 7 E2BIG Em "Arg list too long"
「引数のリストが長すぎます」
新しいプロセスの引数リストと環境変数リストに使用される
バイト数が、
現在の限界である
65536 バイト
新しいプロセスの引数リストと環境変数リストに使用されるバイト数が、
現在の限界である 65536 バイト
.Pf ( Aq Pa sys/param.h
内の
.Dv NCARGS )
@ -152,20 +143,18 @@
.Xr wait 2
または
.Xr waitpid 2
関数が、
子プロセスが存在しないか、待機されたことのない子プロセスを持たない
プロセスによって実行されました。
関数が、子プロセスが存在しないか、待機されたことのない
子プロセスを持たないプロセスによって実行されました。
.It Er 11 EDEADLK Em "Resource deadlock avoided"
「リソースデッドロックを回避しました」
デッドロック状況になる可能性のあるシステムリソースをロックしようとしました。
.It Er 12 ENOMEM Em "Cannot allocate memory"
「メモリの割り当てができません」
新しいプロセス
イメージが、ハードウェアまたはシステムが課する
新しいプロセスイメージが、ハードウェアまたはシステムが課する
メモリ管理制約によって許容されるより多くのメモリを要求しました。
スワップ空間の不足は通常、一時的です。
しかし、コアの不足は一時的ではありません。ソフト限界を
対応するハード限界まで増加させることはできます。
しかし、コアの不足は一時的ではありません。
ソフト限界を対応するハード限界まで増加させることはできます。
.It Er 13 EACCES Em "Permission denied"
「パーミッションが拒絶されました」
ファイルアクセスパーミッションで禁止されている方法で
@ -176,16 +165,16 @@
システムが無効なアドレスを検出しました。
.It Er 15 ENOTBLK Em "Not a block device"
「ブロックデバイスではありません」
ブロックデバイス操作が、非ブロックデバイスまたはファイル
について試みられました。
ブロックデバイス操作が、非ブロックデバイスまたはファイルについて
試みられました。
.It Er 16 EBUSY Em "Resource busy"
「リソースがビジー状態です」
その時点で使用されているシステムリソースを、
その要求と干渉するであろう方法で使おうとしました。
.It Er 17 EEXIST Em "File exists"
「ファイルが存在します」
すでに存在するファイルが不適切なコンテキストで
指定されました。たとえば、
すでに存在するファイルが不適切なコンテキストで指定されました。
たとえば、
.Xr link 2
関数における新しいリンク名としてです。
.It 18 Er EXDEV Em "Improper link"
@ -195,8 +184,7 @@
.It Er 19 ENODEV Em "Operation not supported"
「操作がデバイスによってサポートされていません」
あるデバイスに不適切な関数を適用しようしました。
たとえば、プリンタのような
書込み専用デバイスを読み込もうとしました。
たとえば、プリンタのような書込み専用デバイスを読み取ろうとしました。
.It Er 20 ENOTDIR Em "Not a directory"
「ディレクトリではありません」
指定のパス名の構成要素は確かに存在しましたが、
@ -214,8 +202,7 @@
関数に未定義のシグナルを指定する場合)。
.It Er 23 ENFILE Em "Too many open files in system"
「システム内でオープンされているファイルが多すぎます」
システムが許容するファイル記述子の数の
最大数に到達しており、少なくとも
システムが許容するファイル記述子の数の最大数に到達しており、少なくとも
1 つがクローズされるまで、オープンしようとする要求は満たされません。
.It Er 24 EMFILE Em "Too many open files"
「オープンしているファイルが多すぎます」
@ -230,10 +217,9 @@
を参照) を試みました。
.It Er 26 ETXTBSY Em "Text file busy"
「テキストファイルがビジーです」
別のプロセスによって書込み用にオープンされた純粋プロシジャ (共有テキスト)
ファイルから新しいプロセスを作ろうとしたか、
または純粋プロシジャファイルが実行されている間に、
書込みアクセスを要求する
別のプロセスによって書込み用にオープンされた
純粋プロシジャ (共有テキスト) ファイルから新しいプロセスを作ろうとしたか、
または純粋プロシジャファイルが実行されている間に、書込みアクセスを要求する
.Xr open 2
呼び出しが実行されました。
.It Er 27 EFBIG Em "File too large"
@ -245,17 +231,13 @@
バイト)。
.It Er 28 ENOSPC Em "Device out of space"
「デバイスの空き領域不足です」
該当するファイルシステムで
新たなディスクブロックが利用できないために、
該当するファイルシステムで新たなディスクブロックが利用できないために、
通常ファイルへの
.Xr write 2
処理、ディレクトリの作成、シンボリックリンクの作成、
ディレクトリエントリの作成が失敗しました。
または、
該当するファイルシステムで
新たな inode が利用できないために、
新しく作成するファイルに対する
inode の割り当てが失敗しました。
または、該当するファイルシステムで新たな inode が利用できないために、
新しく作成するファイルに対する inode の割り当てが失敗しました。
.It Er 29 ESPIPE Em "Illegal seek"
「不正なシークです」
.Xr lseek 2
@ -264,17 +246,15 @@ inode
に対して実行されました。
.It Er 30 EROFS Em "Read-only file system"
「読取り専用ファイルシステムです」
ファイルまたはディレクトリを
変更しようとする試みが、その時点で
読取り専用であるファイルシステムに対して行われました。
ファイルまたはディレクトリを変更しようとする試みが、
その時点で読取り専用であるファイルシステムに対して行われました。
.It Er 31 EMLINK Em "Too many links"
「リンクが多すぎます」
1 つのファイルについて許容されるハードリンクの最大数を超過しました
(1 ファイルにつきハードリンク数の限界は 32767 です)。
.It Er 32 EPIPE Em "Broken pipe"
「パイプが破壊されてました」
データを読み取るプロセスのない
パイプ、ソケット、または
データを読み取るプロセスのないパイプ、ソケット、または
.Tn FIFO
に対しての書込みです。
.It Er 33 EDOM Em "Numerical argument out of domain"
@ -297,23 +277,21 @@ inode
を参照)。
.It Er 37 EALREADY Em "Operation already in progress"
「操作は既に進行中です」
既に操作が進行中のノンブロッキング
オブジェクトに対してさらに操作を試みました。
既に操作が進行中のノンブロッキングオブジェクトに対してさらに操作を試みました。
.It Er 38 ENOTSOCK Em "Socket operation on non-socket"
「ソケットでないものについてソケット操作を行いました」
ここに書いてあるりです。
「ソケットでないものについてソケット操作を行いました」
ここに書いてあるとおりです。
.It Er 39 EDESTADDRREQ Em "Destination address required"
「宛先アドレスが要求されています」
ソケットに関する操作に際し、必要なアドレスが抜けています。
.It Er 40 EMSGSIZE Em "Message too long"
「メッセージが長すぎます」
内部メッセージバッファ、または何らかの
ネットワーク上の制限より大きなメッセージが
ソケットで送信されました。
内部メッセージバッファ、または何らかのネットワーク上の制限より
大きなメッセージがソケットで送信されました。
.It Er 41 EPROTOTYPE Em "Protocol wrong type for socket"
「ソケットに対するプロトコルのタイプが間違っています」
要求されたソケットタイプではサポート
されないプロトコルが指定されました。たとえば、タイプ
要求されたソケットタイプではサポートされないプロトコルが指定されました。
たとえば、タイプ
.Dv SOCK_STREAM
では、
.Tn ARPA
@ -325,8 +303,7 @@ inode
.Xr getsockopt 2
呼び出しまたは
.Xr setsockopt 2
呼び出しで、
間違ったオプションまたはレベルが指定されました。
呼び出しで、間違ったオプションまたはレベルが指定されました。
.It Er 43 EPROTONOSUPPORT Em "Protocol not supported"
「プロトコルがサポートされていません」
指定したプロトコルがシステム内に組み込まれていないか、
@ -338,10 +315,9 @@ inode
.It Er 45 EOPNOTSUPP Em "Operation not supported"
「操作がサポートされていません」
引数が指すオブジェクトのタイプは、指定した操作をサポートしていません。
このエラーが起きるのは、通常は、ファイル記述子が
この操作をサポートできないファイルまたは
ソケットを参照しているときです。たとえば、データグラム
ソケット上で接続を
このエラーが起きるのは、通常は、ファイル記述子がこの操作を
サポートできないファイルまたはソケットを参照しているときです。
たとえば、データグラムソケット上で接続を
.Em accept
しようしたときです。
.It Er 46 EPFNOSUPPORT Em "Protocol family not supported"
@ -350,7 +326,8 @@ inode
またはそのプロトコルファミリの実装が存在していません。
.It Er 47 EAFNOSUPPORT Em "Address family not supported by protocol family"
「アドレスファミリがプロトコルファミリによってサポートされていません」
要求したプロトコルと互換性のないアドレスが使用されました。たとえば、
要求したプロトコルと互換性のないアドレスが使用されました。
たとえば、
.Tn ARPA
インターネットプロトコルで
.Tn NS
@ -360,8 +337,7 @@ inode
各アドレスごとに、一度に 1 つだけを利用できます。
.It Er 49 EADDRNOTAVAIL Em "Cannot assing requested address"
「要求されたアドレスを割り当てできません」
通常は、このマシン上にないアドレスで
ソケットを作成しようとした結果です。
通常は、このマシン上にないアドレスでソケットを作成しようとした結果です。
.It Er 50 ENETDOWN Em "Network is down"
「ネットワークがダウンしています」
ソケット操作の結果、動作していないネットワークに遭遇しました。
@ -387,7 +363,7 @@ inode
「ソケットは既に接続されています」
既に接続されたソケットに対して
.Xr connect 2
要求を行いました。
要求を行いました。
または、接続済みのソケットに対する
.Xr sendto 2
@ -395,8 +371,7 @@ inode
要求に際し、既に接続されているのに宛先を指定しました。
.It Er 57 ENOTCONN Em "Socket is not connected"
「ソケットは接続されていません」
ソケットが接続されておらず、
しかも (データグラムソケットを送信するときに)
ソケットが接続されておらず、しかも (データグラムソケットを送信するときに)
アドレスが指定されていなかったために、データを送信または
受信する要求が許可されませんでした。
.It Er 58 ESHUTDOWN Em "Cannot send after socket shutdown"
@ -415,9 +390,8 @@ inode
(タイムアウトの期間は通信プロトコルに左右されます)。
.It Er 61 ECONNREFUSED Em "Connection refused"
「接続が拒絶されました」
接続相手のマシンが接続を自ら拒否したので、
接続を確立できませんでした。これは、通常、相手ホストで
有効でないサービスに接続しようとした結果です。
接続相手のマシンが接続を自ら拒否したので、接続を確立できませんでした。
これは、通常、相手ホストで有効でないサービスに接続しようとした結果です。
.It Er 62 ELOOP Em "Too many levels of symbolic links"
「シンボリックリンクのレベルが多すぎます」
パス名の探索に、32
@ -432,8 +406,7 @@ inode
文字を越えています。
.It Er 64 EHOSTDOWN Em "Host is down"
「ホストがダウンしています」
宛先ホストがダウンしているために
ソケット操作が失敗しました。
宛先ホストがダウンしているためにソケット操作が失敗しました。
.It Er 65 EHOSTUNREACH Em "No route to host"
「ホストへの経路はありません」
到達不可能なホストにソケット操作をしようとしました。
@ -443,8 +416,7 @@ inode
.Ql .\&
.Ql ..\&
以外のエントリを含むディレクトリが
指定されました。
以外のエントリを含むディレクトリが指定されました。
.It Er 67 EPROCLIM Em "Too many processes"
「プロセスが多すぎます」
.It Er 68 EUSERS Em "Too many users"
@ -452,16 +424,14 @@ inode
クォータシステムがテーブルエントリを使い切りました。
.It Er 69 EDQUOT Em "Disc quota exceeded"
「ディスククォータが超過しました」
ユーザのディスクブロッククォータを使い尽くしたために、
通常のファイルへの
ユーザのディスクブロッククォータを使い尽くしたために、通常のファイルへの
.Xr write 2
、ディレクトリの作成、シンボリックリンクの作成、
ディレクトリエントリの作成が失敗しました。
もしくは、ユーザの inode クォータを使い尽くしたために、
新しく作成されたファイルのための
inode の割り当てに失敗しました。
新しく作成されたファイルのための inode の割り当てに失敗しました。
.It Er 70 ESTALE Em "Stale NFS file handle"
腐りかけた NFS ファイルハンドルです」
失効した NFS ファイルハンドルです」
オープンされている (
.Tn NFS
ファイルシステム上の ) ファイルに対してアクセスしようとしましたが、
@ -478,12 +448,10 @@ inode
「RPC バージョンが間違っています」
通信相手の
.Tn RPC
のバージョンが、こちらのバージョンと
互換性がありません。
のバージョンが、こちらのバージョンと互換性がありません。
.It Er 74 EPROGUNAVAIL Em "RPC prog. not avail"
「RPC プログラムが利用できません」
要求したプログラムが
リモートホストに登録されていません。
要求したプログラムがリモートホストに登録されていません。
.It Er 75 EPROGMISMATCH Em "Program version wrong"
「プログラムバージョンが間違っています」
要求したバージョンのプログラムが、リモートホスト
@ -540,9 +508,9 @@ IPC
.Sh 定義
.Bl -tag -width Ds
.It "プロセス ID (Process ID)"
システム内のアクティブな各プロセスは、プロセス ID
と呼ばれる負でない整数によって一意に識別されます。この ID
の範囲は 0 から 99999 までです。
システム内のアクティブな各プロセスは、プロセス ID と呼ばれる
負でない整数によって一意に識別されます。
この ID の範囲は 0 から 99999 までです。
.It "親プロセス ID (Parent process ID)"
新しいプロセスは、現在のアクティブなプロセスから作成されます (
.Xr fork 2
@ -568,8 +536,8 @@ IPC
セッションは 1 つ以上のプロセスグループの集合です。
セッションは
.Xr setsid 2
の呼び出しが成功すると作成されます。これによって、
呼び出したプロセスは、新規のセッションが
の呼び出しが成功すると作成されます。
これによって、呼び出したプロセスは、新規のセッションが
1 つだけ持つプロセスグループの唯一のメンバになります。
.It "セッションリーダ (Session leader)"
.Xr setsid 2
@ -590,43 +558,40 @@ IPC
そのセッション内のどのプロセスグループでも、
フォアグラウンドに置くことができるようになります。
この機能は、同じ端末をめぐり競合している複数のジョブの間で
調停を行うために用いられます (
調停を行うために用いられます (
.Xr csh 1
.Xr tty 4
を参照)。
.It "孤児プロセスグループ (Orphaned Process Group)"
プロセスグループは、ジョブ制御を行うシェルの制御下にない場合、
.Em 孤児になった
.It "親のないプロセスグループ (Orphaned Process Group)"
プロセスグループは、ジョブ制御を行うシェルの制御下にない場合、
.Em 親なしになった
とみなされます。
より正確に言うと、
そのプロセスグループのメンバはどれも、
より正確に言うと、そのプロセスグループのメンバはどれも、
そのグループと同じセッションに属す親プロセスを持たず、かつ、
親プロセスが別のプロセスグループに属す場合、
そのプロセスグループは孤児になります。
そのプロセスグループは親なしになります。
なお、プロセスが終了するとき、その子プロセスの親プロセスは
.Xr init 8
となるように変更されます。そしてこれは別個のセッションになります。
孤児になったプロセスグループのメンバの全てが、必ずしも
孤児になったプロセス (プロセスを作成したプロセスが終了した)
となるように変更されます。
そしてこれは別個のセッションになります。
親のないプロセスグループのメンバの全てが、必ずしも
親のないプロセス (プロセスを作成したプロセスが終了した)
というわけではありません。
この定義により、セッションリーダのプロセスグループは孤児になります。
この定義により、セッションリーダのプロセスグループは親なしになります。
.It "実ユーザ ID と実グループID (Real User ID and Real Group ID) "
システム上の各ユーザは、実ユーザ ID と呼ばれる
正の整数によって識別されます。
システム上の各ユーザは、実ユーザ ID と呼ばれる正の整数によって識別されます。
.Pp
各ユーザは、1 つまたは複数のグループのメンバでもあります。
これらのグループの 1 つは他のものから
区別され、アカウンティング機能を実現するのに使用されます。
この区別されたグループに対応する正の整数は、実グループ ID と
呼ばれます。
これらのグループの 1 つは他のものから区別され、
アカウンティング機能を実現するのに使用されます。
この区別されたグループに対応する正の整数は、実グループ ID と呼ばれます。
.Pp
すべてのプロセスは実ユーザ ID と実グループ ID を持っています。
これらは、そのプロセスを作成したプロセスと等価な属性値を
使って初期化されます。
.It "実効ユーザ ID、実効グループ ID、グループアクセスリスト (Effective User Id, Effective Group Id, and Group Access List)"
システムリソースへのアクセスは、
実効ユーザ ID とグループアクセスリストという
システムリソースへのアクセスは、実効ユーザ ID とグループアクセスリストという
2 つの値を使って決定されます。
グループアクセスリストの最初のメンバは、実効グループ ID
としても知られています
@ -634,36 +599,35 @@ IPC
セットとして知られ、実効グループ ID がリストのメンバで
あるかどうかは未規定です)。
.Pp
実効ユーザ ID と実効グループ ID は、最初は
それぞれ、プロセスの実ユーザ ID と実グループ ID です。
いずれも (おそらくその先祖のいずれかが) set-user-ID ファイルまたは
set-group-ID ファイルを実行することにより変更することができます (
実効ユーザ ID と実効グループ ID は、最初はそれぞれ、
プロセスの実ユーザ ID と実グループ ID です。
いずれも (おそらくその先祖のいずれかが) ユーザ ID 設定ファイルまたは
グループ ID 設定ファイルを実行することにより変更することができます (
.Xr execve 2
を参照してください)。
慣習で、実効グループ ID
(グループアクセスリストの最初のメンバ) は複製されるので、
set-group-ID プログラムの実行の結果、もともと持っていた
グループ ID 設定プログラムの実行の結果、もともと持っていた
(実) グループ ID が失われることはありません。
.Pp
グループアクセスリストは、リソースへのアクセスが可能かどうかを決定する
ためにだけ使用されるグループ ID の集合です。
グループアクセスリストは、リソースへのアクセスが可能かどうかを
決定するためにだけ使用されるグループ ID の集合です。
アクセスチェックは、以降の
``ファイルアクセスパーミッション''
で説明するように行われます。
.It "保存されたセットユーザ ID と保存されたセットグループ ID (Saved Set User ID and Saved Set Group ID)"
プロセスが新しいファイルを実行するとき、
ファイルが set-user-ID であれば、
プロセスが新しいファイルを実行するとき、ファイルがユーザ ID 設定であれば、
実効ユーザ ID はそのファイルの所有者に設定され、
ファイルが set-group-ID であれば、
ファイルがグループ ID 設定であれば、
実効グループ ID (グループアクセスリストの最初の要素) は
ファイルのグループに設定されます。
それからプロセスの実効ユーザ ID は saved set-user-ID として記録され、
プロセスの実効ユーザ ID は saved set-group-ID として記録されます。
それからプロセスの実効ユーザ ID は退避ユーザ ID として記録され、
プロセスの実効ユーザ ID は退避グループ ID として記録されます。
これらの記録された値は、実 ID (
.Xr setuid 2
を参照) に戻った後で、実効ユーザ ID または実効グループ ID をこれらの
値に回復するために利用できます。
(POSIX.1 では saved set-user-ID と saved set-group-ID はオプションであり、
(POSIX.1 では、退避ユーザ ID と退避グループ ID はオプションであり、
setuid および setgid の内部で使用されますが、
これはスーパユーザについて意図どおりには機能しません)。
.It "スーパユーザ (super-user)"
@ -677,10 +641,8 @@ setuid
.Xr pipe 2 ,
.Xr socket 2 ,
.Xr socketpair 2
によってソケットが作成されるときに
システムによって割り当てられる整数です。
この整数は、
指定のプロセスやその子プロセスから、
によってソケットが作成されるときにシステムによって割り当てられる整数です。
この整数は、指定のプロセスやその子プロセスから、
そのファイルやソケットへのアクセスパスを一意に識別します。
.It "ファイル名 (File Name)"
最高 255
@ -701,8 +663,8 @@ setuid
.Ql \&? ,
.Ql \&[ ,
.Ql \&]
を使用するのは賢明ではありません。シェルによって
これらの文字には特殊な意味がつけられるからです。
を使用するのは賢明ではありません。
シェルによってこれらの文字には特殊な意味がつけられるからです。
.It "パス名 (Path Name)"
パス名は、
.Tn NUL
@ -710,80 +672,82 @@ setuid
スラッシュ
.Ql \&/
(省略可能) で始まり、スラッシュで区切られた 0 個以上のディレクトリ名が続き、
ファイル名 (省略可能) が続きます。パス名の長さの合計は 1024
ファイル名 (省略可能) が続きます。
パス名の長さの合計は 1024
.Pq Dv MAXPATHLEN
文字未満である必要があります。
.Pp
パス名がスラッシュで始まる場合、パス検索はルートディレクトリから
開始します。そうでない場合、検索は現在の作業ディレクトリから開始します。
開始します。
そうでない場合、検索は現在の作業ディレクトリから開始します。
スラッシュだけの場合、ルートディレクトリを指定します。
空のパス名は現在のディレクトリを指します。
.It "ディレクトリ (Directory)"
ディレクトリは特殊なタイプのファイルであり、他のファイルを参照する
エントリを含んでいます。ディレクトリエントリをリンクと呼びます。
エントリを含んでいます。
ディレクトリエントリをリンクと呼びます。
伝統的に、ディレクトリには少なくとも 2 つのリンク、
.Ql .\&
.Ql \&..
を含みます。これらはそれぞれ
を含みます。
これらはそれぞれ
.Em ドット
および
.Em ドット-ドット
と呼ばれます。ドットは、そのディレクトリ自体を指し、
と呼ばれます。
ドットは、そのディレクトリ自体を指し、
ドット-ドットはその親ディレクトリを指します。
.It "ルートディレクトリと現在の作業ディレクトリ (Root Directory and Current Working Directory)"
各プロセスは、ルートディレクトリと現在の作業ディレクトリという
概念を持つとされてきました。これらの概念はパス名検索を解決する際に
用いられます。プロセスのルートディレクトリは、
概念を持つとされてきました。
これらの概念はパス名検索を解決する際に用いられます。
プロセスのルートディレクトリは、
ルートファイルシステムのルートディレクトリである必要はありません。
.It "ファイルアクセスパーミッション (File Access Permission)"
ファイルシステム内の各ファイルはアクセスパーミッションの
集合を持っています。これらのパーミッションは、プロセスがファイルに
ついて要求された操作 (たとえば、書込み用にファイルをオープンする)
を行なってもよいかどうかを判定するのに使用されます。
集合を持っています。
これらのパーミッションは、プロセスがファイルについて要求された操作
(たとえば、書込み用にファイルをオープンする) を行ってもよいかどうかを
判定するのに使用されます。
アクセスパーミッションはファイルが作成されたときに設定されます。
アクセスパーミッションは
.Xr chmod 2
呼び出しを用いて後から変更することもできます。
.Pp
ファイルアクセスでは、ファイルが
読取りが許されているかどうか、書込みが許されているかどうか、
実行が許されているかどうか、
によって分類されます。
ディレクトリファイルでは、
ディレクトリを検索してもよいかどうかを制御するのに
実行パーミッションを使用します。
ファイルアクセスでは、ファイルが読取りが許されているかどうか、
書込みが許されているかどうか、実行が許されているかどうか、によって
分類されます。
ディレクトリファイルでは、ディレクトリを検索してもよいかどうかを
制御するのに実行パーミッションを使用します。
.Pp
システムがファイルアクセスパーミッションを解釈するにあたり、
ユーザの 3 つの異なるクラス (ファイルの所有者、
ファイルのグループ内のユーザ、その他) のどれに適用するかによって
解釈します。
ファイルのグループ内のユーザ、その他) のどれに適用するかによって解釈します。
各ファイルは、これらの各クラスについて、
独立したアクセスパーミッションの集合を持っています。
アクセスチェックが行われると、システムは、
アクセスチェックが行われると、システムは、
呼び出し側に適用できるアクセス情報をチェックすることによって、
パーミッションが認可されるかどうかを判定します。
.Pp
ファイルについての読取り、書込み、実行/検索の
ファイルについての読取り、書込み、実行 / 検索の
各パーミッションは、次の場合にプロセスに認可されます。
.Pp
プロセスの実効ユーザ ID がスーパユーザである場合 (注:
スーパユーザであっても、実行可能でないファイルを実行する
プロセスの実効ユーザ ID がスーパユーザである場合
(注: スーパユーザであっても、実行可能でないファイルを実行する
ことはできません)。
.Pp
プロセスの実効ユーザ ID がファイルの所有者のユーザ ID
に一致し、所有者のパーミッションがアクセスを許可している場合。
プロセスの実効ユーザ ID がファイルの所有者のユーザ ID に一致し、
所有者のパーミッションがアクセスを許可している場合。
.Pp
プロセスの実効ユーザ ID がファイルの所有者のユーザ ID
と一致せずに、プロセスの実効グループ ID がファイルのグループ ID
と一致するかまたはファイルのグループ ID がプロセスの
グループアクセスリスト内にあるかのどちらかであり、
グループパーミッションがアクセスを許容している場合。
プロセスの実効ユーザ ID がファイルの所有者のユーザ ID と一致せずに、
プロセスの実効グループ ID がファイルのグループ ID と一致するか
またはファイルのグループ ID がプロセスのグループアクセスリスト内に
あるかのどちらかであり、グループパーミッションがアクセスを許容している場合。
.Pp
プロセスの実効ユーザ ID も実効グループ ID もグループアクセスリストも、
ファイルの対応するユーザ ID およびグループ ID と
一致しないが、``その他のユーザ'' のパーミッションが
アクセスを許容する場合。
ファイルの対応するユーザ ID およびグループ ID と一致しないが、
``その他のユーザ'' のパーミッションがアクセスを許容する場合。
.Pp
上記のいずれにも該当しない場合、パーミッションは拒絶されます。
.It "ソケットとアドレスファミリ (Sockets and Address Families)"
@ -795,16 +759,15 @@ setuid
相手の名前が必要かどうか、通信に信頼性があるかどうか、
メッセージ受信者を名付ける際に使用される形式などが含まれます。
.Pp
実際のシステムはそれぞれ、いくつかのソケット
タイプの集合をサポートしています。
実際のシステムはそれぞれ、いくつかのソケットタイプの集合をサポートしています。
利用できるタイプおよびそれらのプロパティの詳細については、
.Xr socket 2
を参照してください。
.Pp
実際のシステムはそれぞれ、いくつかの通信プロトコルの集合を
サポートしています。プロトコルの集合はそれぞれある特定の形式の
アドレスをサポートします。アドレスファミリは、
あるプロトコルのグループに対応するアドレスの集合です。
サポートしています。
プロトコルの集合はそれぞれある特定の形式のアドレスをサポートします。
アドレスファミリは、あるプロトコルのグループに対応するアドレスの集合です。
ソケットはそれぞれ、ソケットが作成されたアドレス
ファミリから選択したアドレスを持ちます。
.El

View file

@ -51,14 +51,16 @@
関数は特殊ファイルの下層となっているデバイスのパラメータを操作します。
特に、キャラクタ型特殊ファイル (たとえば、端末) の多数の操作属性は
.Fn ioctl
で制御できます。引数
で制御できます。
引数
.Fa d
は開いているファイル記述子である必要があります。
.Pp
.Nm
への 3 番めの引数は従来から
.Ar "char *argp"
と名前付けられています。しかし、
と名前付けられています。
しかし、
.Fx 3.0
での
.Nm
@ -80,8 +82,7 @@
のサイズ (バイト単位) をエンコードします。
ioctl の
.Fa request
を指定するのに使用されるマクロと定義
はファイル
を指定するのに使用されるマクロと定義はファイル
.Ao Pa sys/ioctl.h Ac
の中にあります。
.Sh 戻り値
@ -90,7 +91,7 @@ ioctl
が設定されます。
.Sh エラー
.Fn ioctl
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EBADF
.Fa d

View file

@ -51,16 +51,14 @@
.Fn issetugid
関数は、プロセスの環境またはメモリアドレス空間が
.Dq 汚染されている
と見なされる場合
1 を返し、そうでない場合は 0 を返します。
と見なされる場合 1 を返し、そうでない場合は 0 を返します。
.Pp
setuid または setgid ビットのどちらかが設定されたプロセスを
.Xr execve 2
システムコールで実行した (そして結果として追加の特権が与えられた)
場合、あるいはプロセスの、実ユーザ ID, 実効ユーザ ID,
保存されたユーザ ID, グループ ID の
いずれかが実行後に変更された場合、そのプロセスは汚染されていると
見なされます。
システムコールで実行した (そして結果として追加の特権が与えられた) 場合、
あるいはプロセスの実ユーザ ID、実効ユーザ ID、退避ユーザ ID、
もしくは実グループ ID、実効グループ ID、退避グループ ID のいずれかが
実行後に変更された場合、そのプロセスは汚染されていると見なされます。
.Pp
このシステムコールは、ユーザから得られた情報を使用するのが
安全かどうかをライブラリルーチン (たとえば libc や libtermcap) が
@ -83,8 +81,7 @@ setuid
したがって
.Dq 汚染された
状態は引き渡されません。
setuid を開始するけれども汚染されていない
プロセスを作成できる必要のある
setuid を開始するけれども汚染されていないプロセスを作成できる必要のある
.Xr su 1
のようなプログラムにはこれは重要です。
.Sh エラー

View file

@ -36,24 +36,27 @@ struct jail {
.Ed
.Pp
.Dq Li version
には使用する API のバージョンを定義します。今のところ 0 に設定します。
には使用する API のバージョンを定義します。
今のところ 0 に設定します。
.Pp
.Dq Li path
ポインタには牢屋のルートになるディレクトリを設定します。
.Pp
.Dq Li hostname
ポインタには牢屋のホスト名を設定します。これは牢屋の中から
変更できます。
ポインタには牢屋のホスト名を設定します。
これは牢屋の中から変更できます。
.Pp
.Dq Li ip_number
は牢屋に割り当てる IP 番号を設定します。
.Sh 牢屋?
プロセスは一度牢屋に入れられると、それ自身とその子孫は牢屋から
逃れることはできません。既存の牢屋にプロセスを追加することはできません。
逃れることはできません。
既存の牢屋にプロセスを追加することはできません。
.Pp
牢屋の中では "スーパユーザ" の概念はとても弱まっています。一般に
全体が牢屋の中にあるわけではないものを牢屋の中から台無しにすることは
できないと考えられます。例えば
牢屋の中では "スーパユーザ" の概念はとても弱まっています。
一般に全体が牢屋の中にあるわけではないものを牢屋の中から台無しにすることは
できないと考えられます。
例えば
.Dq Li path
の下のディレクトリツリーは
.Dq Li "rm -rf /*"
@ -71,7 +74,7 @@ IP
閉じ込められたプロセスでは現在牢屋に設定されているホスト名になります。
.Sh エラー
.Fn jail
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
引数のバージョン番号が正しくありません。

View file

@ -60,15 +60,14 @@
0 の場合は、エラーチェックを実行しますが、実際にシグナルは送信されません。
これを使用して
.Fa pid
の有効性をチェック
できます。
の有効性をチェックできます。
.Pp
プロセスが
.Fa pid
によって指定されたプロセスにシグナルを送信するパーミッションを持つためには、
受信するプロセスの実ユーザ ID または実効ユーザ ID が
送信プロセスの対応するものと一致するか、
またはユーザは該当する特権を持っている (set-user-ID で与えられた特権、
またはユーザは該当する特権を持っている (ユーザ ID 設定で与えられた特権、
またはユーザがスーパユーザである) 必要があります。
唯一の例外はシグナル SIGCONT で、これだけは現在のプロセスの子孫に
必ず送信できます。
@ -83,35 +82,34 @@
.It Fa pid No 0 の場合:
.Fa sig
はグループ ID が送信側のプロセスグループ ID と等しく、それについて
プロセスがパーミッションを持っているすべてのプロセスに送信されます。これは
プロセスがパーミッションを持っているすべてのプロセスに送信されます。
これは
.Xr killpg 2
の変種です。
.\".It \&If Fa pid No \&is -1 :
.It Fa pid No -1 の場合:
ユーザにスーパユーザの特権がある場合、
システムプロセス
ユーザにスーパユーザの特権がある場合、システムプロセス
.Dv ( P_SYSTEM
フラグが設定されている)、ID が 1 のプロセス (通常は
.Xr init 8 )、
およびシグナルを送信しているプロセスを
除くすべてのプロセスにシグナルが送信されます。
ユーザがスーパユーザでない場合、シグナルを送信しているプロセスを除く、
ユーザと同じ uid のすべてのプロセスに
シグナルが送信されます。いずれかのプロセスにシグナルを送信できた場合、
エラーは返されません。
ユーザと同じ uid のすべてのプロセスにシグナルが送信されます。
いずれかのプロセスにシグナルを送信できた場合、エラーは返されません。
.El
.Pp
System V との互換性を保つために、プロセス番号が -1 以外の負数の場合、
プロセス番号の絶対値に等しいプロセスグループ ID を持つ
すべてのプロセスにシグナルが
送信されます。これは
すべてのプロセスにシグナルが送信されます。
これは
.Xr killpg 2
の変種です。
.Sh 戻り値
.Rv -std kill
.Sh エラー
.Fn Kill
は次の場合に処理に失敗し、シグナルは送信されません
は次の場合に処理に失敗し、シグナルは送信されません:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa sig
@ -123,11 +121,10 @@ System V
プロセス ID は 0 として与えられたものの、
送信プロセスにプロセスグループがありません。
.It Bq Er EPERM
送信プロセスはスーパユーザではなく、その実効ユーザ ID が受信
プロセスの実効ユーザ ID と一致しません。
送信プロセスはスーパユーザではなく、その実効ユーザ ID が受信プロセスの
実効ユーザ ID と一致しません。
プロセスグループにシグナルを送信するとき、グループのメンバの
いずれかにシグナル
を送信することができない場合、このエラーが返されます。
いずれかにシグナルを送信することができない場合、このエラーが返されます。
.El
.Sh 関連項目
.Xr getpgrp 2 ,
@ -140,7 +137,7 @@ System V
.Fn kill
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn kill
関数は

View file

@ -52,7 +52,8 @@
.Fa pgrp
にシグナル
.Fa sig
を送信します。シグナルのリストについては
を送信します。
シグナルのリストについては
.Xr sigaction 2
を参照してください。
.Fa pgrp
@ -60,8 +61,7 @@
.Fn killpg
は、送信側プロセスのプロセスグループにシグナルを送信します。
.Pp
送信側プロセスとプロセスグループのメンバが
同じ実効ユーザ ID を持つか、
送信側プロセスとプロセスグループのメンバが同じ実効ユーザ ID を持つか、
または送信側がスーパユーザである必要があります。
唯一の特殊なケースとして、継続シグナル SIGCONT は、
現在のプロセスの子孫であればどのプロセスにでも送信できます。
@ -69,7 +69,7 @@
.Rv -std killpg
.Sh エラー
.Fn killpg
は、次の場合に処理に失敗し、シグナルは送信されません
は、次の場合に処理に失敗し、シグナルは送信されません:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa sig
@ -82,8 +82,7 @@
プロセスグループがありません。
.It Bq Er EPERM
送信側プロセスがスーパユーザでなく、1 つ以上のターゲットプロセスの
実効ユーザ ID が送信側プロセスの実効ユーザ ID と
異なっています。
実効ユーザ ID が送信側プロセスの実効ユーザ ID と異なっています。
.El
.Sh 関連項目
.Xr getpgrp 2 ,

View file

@ -59,10 +59,10 @@
.Fn kldfind
は処理を失敗すると、
.Va errno
を以下のように設定します
を以下のように設定します:
.Bl -tag -width Er
.It Bq Er EFAULT
この操作に必要なデータがカーネル空間から読取れませんでした。
この操作に必要なデータがカーネル空間から読取れませんでした。
.It Bq Er ENOENT
指定されたファイルはカーネルにロードされていません。
.El

View file

@ -43,8 +43,7 @@
.Fn kldfirstmod
関数は、
.Fa fileid
によって参照された最初のモジュールに関連するモジュール ID を
返します。
によって参照された最初のモジュールに関連するモジュール ID を返します。
.Sh 戻り値
.Fn kldfirstmod
は、

View file

@ -53,10 +53,10 @@
.Va errno
が設定されます。
.Sh エラー
指定されたファイルは次の場合を除いてロードされます
指定されたファイルは次の場合を除いてロードされます:
.Bl -tag -width Er
.It Bq Er EPERM
ファイルを読取ることができません。
ファイルを読取ることができません。
あるいはファイルをカーネルとリンクすることができません。
.Nm kld
関数を使用するためには root ユーザである必要があります。

View file

@ -58,7 +58,8 @@
.Fn kldnext
によって設定されるエラーは
.Er ENOENT
だけです。これが設定されるのは、
だけです。
これが設定されるのは、
.Va fileid
が存在していない (ロードされていない) kld ファイルを参照しているときです。
.Sh 関連項目

View file

@ -63,8 +63,7 @@ struct kld_file_stat {
.Fn kldstat
自体ではなく、
.Fn kldstat
を呼び出すコードで前述した
構造体のサイズに設定します。
を呼び出すコードで前述した構造体のサイズに設定します。
.It name
.Fa fileid
によって参照されるファイルの名前
@ -86,19 +85,17 @@ kld
.Fa fileid
が参照するファイルに関する情報は
.Fa stat
が指す構造体に記入されます
が指す構造体に記入されます:
.Bl -tag -width Er
.It Bq Er ENOENT
ファイルが見つかりませんでした (おそらくロードされていないのでしょう)。
.It Bq Er EINVAL
stat
stat の
.Fa version
フィールドで指定されたバージョンが適切ではありません。
.Fa version
フィールドに適切に記入しているのにこのエラーが起きた場合は、
ワールド、カーネル、
またはアプリケーションを再構築する必要があります。
ワールド、カーネル、またはアプリケーションを再構築する必要があります。
.It Bq Er EFAULT
.Fn copyout
関数で、フィールドを

View file

@ -100,7 +100,7 @@ struct kld_sym_lookup {
の中の値が不正です。
.It Bq Er ENOENT
.Fa fileid
が不正であるか、指定したシンボルが見かりませんでした。
が不正であるか、指定したシンボルが見かりませんでした。
.El
.Sh 関連項目
.Xr kldfind 2 ,
@ -116,4 +116,4 @@ struct kld_sym_lookup {
.Fn kldsym
関数は
.Fx 3.0
めて登場しました。
はじめて登場しました。

View file

@ -49,7 +49,7 @@
.Rv -std
.Sh エラー
.Fa fileid
によって参照されるファイルは、次の場合を除いてアンロードされます
によって参照されるファイルは、次の場合を除いてアンロードされます:
.Bl -tag -width Er
.It Bq Er EPERM
ファイルをカーネルからアンリンク出来ません。

View file

@ -46,8 +46,7 @@
.Sh 解説
.Fn kqueue
は、フィルタと呼ばれる小さなカーネルコードの実行結果に基づき、
イベントの発生やある状態の成立を
ユーザに通知する一般的な方法を提供します。
イベントの発生やある状態の成立をユーザに通知する一般的な方法を提供します。
kevent は (ident, filter) のペアによって識別されます。
ここで、ident は識別子、filter はフィルタを表します。
1 つの kqueue には、同じ kevent が複数存在することはできません。
@ -89,10 +88,11 @@ kqueue
.Fa changelist
.Va kevent
構造体の配列へのポインタです。この構造体は
構造体の配列へのポインタです。
この構造体は
.Aq Pa sys/event.h
で定義されています。
保留中のイベントをキューから読み込む前に、
保留中のイベントをキューから読み取る前に、
.Fa changelist
に含まれている全ての変更を適用します。
.Fa nchanges
@ -126,7 +126,7 @@ kqueue
は kevent 構造体の初期化を簡単にするマクロです。
.Pp
.Va kevent
構造体は次のように定義されています
構造体は次のように定義されています:
.Bd -literal
struct kevent {
uintptr_t ident; /* このイベントの識別子 */
@ -139,7 +139,7 @@ struct kevent {
.Ed
.Pp
.Fa struct kevent
のフィールドは以下の通りです。
のフィールドは以下のとおりです:
.Bl -tag -width XXXfilter
.It ident
このイベントを識別するために使用される値です。
@ -159,7 +159,7 @@ struct kevent {
.El
.Pp
.Va flags
フィールドは以下の値を含むことができます
フィールドは以下の値を含むことができます:
.Bl -tag -width XXXEV_ONESHOT
.It EV_ADD
イベントを kqueue に追加します。
@ -172,7 +172,8 @@ struct kevent {
.Fn kevent
がそのイベントを返すことを許可します。
.It EV_DISABLE
イベントを無効にします。これにより
イベントを無効にします。
これにより
.Fn kevent
はそのイベントを返さなくなります。
フィルタ自身は無効にされません。
@ -206,7 +207,7 @@ kqueue
.Bl -tag -width EVFILT_SIGNAL
.It EVFILT_READ
識別子に記述子を引数として取ります。
み込み可能なデータがあるときに戻ります。
取り可能なデータがあるときに戻ります。
このフィルタの振舞いは、その記述子の型により少し異なります。
.Pp
.Bl -tag -width 2n
@ -219,20 +220,22 @@ kqueue
.Pp
その他のソケット記述子の場合、ソケットバッファの
.Dv SO_RCVLOWAT
の値を基準にして、読み込むデータがあるときに戻ります。
の値を基準にして、読み取るデータがあるときに戻ります。
フィルタを追加するときに、
.Va fflags
に NOTE_LOWAT を設定し
.Va data
に新しい最低基準値を指定することにより、
この値を、
フィルタごとの最低基準値で上書きすることが可能です。戻るときには、
フィルタごとの最低基準値で上書きすることが可能です。
戻るときには、
.Va data
には読み込み可能なプロトコルデータのバイト数が入っています。
には読取り可能なプロトコルデータのバイト数が入っています。
.Pp
ソケットの読み込み側が切断された場合には、フィルタは
ソケットの読取り側が切断された場合には、フィルタは
.Va flags
に EV_EOF も設定します。ここでエラーが起きた場合には、
に EV_EOF も設定します。
ここでエラーが起きた場合には、
.Va fflags
にソケットエラーを返します。
ソケットバッファの中に保留中のデータが残っていても、
@ -243,39 +246,39 @@ kqueue
は現在位置からファイルの最後 (EOF) までのオフセットが入っています。
この値は負であるかもしれません。
.It FIFO とパイプ
読み込むべきデータがあるときに戻ります。
読み取るべきデータがあるときに戻ります。
.Va data
には有効なバイト数が入っています。
.Pp
最後の書込み側が切断したときに、フィルタは
最後の書込み側が切断したときに、フィルタは
.Va flags
に EV_EOF をセットします。
EV_CLEAR を渡すことで、このフラグをクリアすることができ、
フィルタはデータが読み込めるように
なるのを戻らずに再び待ちます。
フィルタはデータが読み取るようになるのを戻らずに再び待ちます。
.El
.It EVFILT_WRITE
識別子に記述子を引数として取ります。
その記述子が書込み可能になるたびに戻ります。
その記述子が書込み可能になるたびに戻ります。
ソケット、パイプおよび FIFO では、
.Va data
には書込みバッファの残り領域の大きさが入っています。
み込み側が切断したときに、フィルタは EV_EOF をセットします。
には書込みバッファの残り領域の大きさが入っています。
取り側が切断したときに、フィルタは EV_EOF をセットします。
FIFO の場合、EV_CLEAR を使いこれをクリアすることができます。
このフィルタは vnode をサポートしていないことに注意してください。
.Pp
ソケットの場合、最低基準値およびソケットエラーの取り扱いは
EVFULT_READ の場合と同じです。
.It EVFILT_AIO
非同期入出力リクエストの sigevent 部分の、
非同期入出力要求の sigevent 部分の、
.Va sigev_notify_kqueue
にはイベントを付加する kqueue の記述子を入れ、
.Va sigev_value
には udata の値を入れ、
.Va sigev_notify
には SIGEV_KEVENT を入れて、非同期入出力リクエストを埋めます。
には SIGEV_KEVENT を入れて、非同期入出力要求を埋めます。
aio_* 関数が呼び出されたとき、そのイベントは
指定された kqueue に登録されます。aio_* 関数が返した
指定された kqueue に登録されます。
aio_* 関数が返した
.Fa aiocb
構造体を
.Va ident
@ -285,7 +288,7 @@ aio_*
別の方法として、
.Va ident
に kqueue 記述子を入れて kevent 構造体を初期化し、
そのアドレスを非同期リクエスト
そのアドレスを非同期要求
.Va aio_lio_opcode
フィールドに置くことも可能です。
しかしながら、このアプローチは 64 ビットポインタのアーキテクチャでは
@ -294,16 +297,15 @@ aio_*
ファイル記述子を識別子に、監視するイベントを
.Va fflags
に引数として取ります。
指定した記述子に対し
要求されたイベントが 1 つ以上発生したときに戻ります。
監視するイベントを以下に示します。
指定した記述子に対し要求されたイベントが 1 つ以上発生したときに戻ります。
監視するイベントを以下に示します:
.Bl -tag -width XXNOTE_RENAME
.It NOTE_DELETE
記述子が参照するファイルに対し
.Fn unlink
が呼ばれました。
.It NOTE_WRITE
記述子が参照するファイルに対し書込みが起こりました。
記述子が参照するファイルに対し書込みが起こりました。
.It NOTE_EXTEND
記述子が参照するファイルのサイズが拡張されました。
.It NOTE_ATTRIB
@ -329,7 +331,7 @@ aio_*
要求されたイベントを 1 つ以上プロセスが実行するときに戻ります。
あるプロセスが他のプロセスを正常に見ることができる場合には、
イベントをそのプロセスに結び付けることができます。
監視するイベントを次に示します
監視するイベントを次に示します:
.Bl -tag -width XXNOTE_TRACKERR
.It NOTE_EXIT
プロセスが終了しました。
@ -424,7 +426,7 @@ EV_ONESHOT
は 0 を返します。
.Sh エラー
.Fn kqueue
関数は以下の場合に失敗します
関数は以下の場合に失敗します:
.Bl -tag -width Er
.It Bq Er ENOMEM
カーネルがカーネルキューのための十分なメモリの割り当てに失敗しました。
@ -435,13 +437,13 @@ EV_ONESHOT
.El
.Pp
.Fn kevent
関数は以下の場合に失敗します
関数は以下の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EACCES
プロセスがフィルタを登録する権限を持っていません。
.It Bq Er EFAULT
.Va kevent
構造体の読み込みまたは書き込みでエラーがありました。
構造体の読取りまたは書込みでエラーがありました。
.It Bq Er EBADF
指定された記述子が有効ではありません。
.It Bq Er EINTR
@ -472,7 +474,7 @@ EV_ONESHOT
.Fn kevent
関数は
.Fx 4.1
めて登場しました。
はじめて登場しました。
.Sh 作者
.Fn kqueue
システムと、このマニュアルページは

View file

@ -51,23 +51,24 @@
.Sh 解説
.Fn ktrace
関数は、1 つまたは複数のプロセスのトレースを有効または無効にします。
ユーザは自分のプロセスだけを
トレースできます。スーパユーザだけが、setuid プログラムまたは
ユーザは自分のプロセスだけをトレースできます。
スーパユーザだけが、setuid プログラムまたは
setgid プログラムをトレースできます。
.Pp
.Fa tracefile
は、トレースに使用するファイルのパス名を指定します。
ファイルは存在していなければならず、
呼び出し側プロセスによって書込み可能な通常ファイルである必要があります。
呼び出し側プロセスによって書込み可能な通常ファイルである必要があります。
トレースレコードはすべてファイルの末尾に追加されるので、
直前のトレースデータを切り捨てるためにはファイルの長さを 0 にする必要が
あります。トレース点が無効な場合 (後述の KTROP_CLEAR を参照)、
あります。
トレース点が無効な場合 (後述の KTROP_CLEAR を参照)、
.Fa tracefile
は NULL にできます。
.Pp
.Fa ops
パラメータは要求された ktrace 操作を指定します。
定義されている操作は次のとおりです
定義されている操作は次のとおりです:
.Bl -column KTRFLAG_DESCENDXXX -offset indent
.It "KTROP_SET "
.Fa trpoints
@ -82,7 +83,7 @@ setgid
.Pp
.Fa trpoints
パラメータは関心のあるトレース点を指定します。
定義されているトレース点は次のとおりです
定義されているトレース点は次のとおりです:
.Bl -column KTRFAC_SYSCALLXXX -offset indent
.It "KTRFAC_SYSCALL システムコールをトレースします。"
.It "KTRFAC_SYSRET システムコールからの戻り値をトレースします。"
@ -96,7 +97,7 @@ setgid
.Pp
各トレースイベントは、汎用のヘッダの後に
トレース点に固有の構成要素が続く形式のレコードを出力します。
汎用のヘッダは次のとおりです
汎用のヘッダは次のとおりです:
.Bd -literal
struct ktr_header {
int ktr_len; /* バッファの長さ */
@ -120,21 +121,21 @@ struct ktr_header {
フィールドは、
レコードが生成された時刻を (マイクロ秒単位で) 示します。
.Va ktr_buf
は、内部カーネルポインタで
あって有用ではありません。
は、内部カーネルポインタであって有用ではありません。
.Pp
汎用ヘッダには
.Va ktr_len
バイトの長さの
.Va ktr_type
レコードが続きます。タイプに固有のレコードは
レコードが続きます。
タイプに固有のレコードは
.Aq Pa sys/ktrace.h
インクルードファイル内で定義されています。
.Sh 戻り値
.Rv -std ktrace
.Sh エラー
.Fn ktrace
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。

View file

@ -51,13 +51,12 @@
.Fa name1
が指す下層オブジェクトの属性を持つ、指定のディレクトリエントリ (ハードリンク)
.Fa name2
を不可分に作成します。リンクが正常に完了すると
下層オブジェクトのリンクカウントが増加します。
を不可分に作成します。
リンクが正常に完了すると下層オブジェクトのリンクカウントが増加します。
.Fa name1
.Fa name2
は、下層オブジェクトへのアクセスとアクセス権を等しく
共有します。
は、下層オブジェクトへのアクセスとアクセス権を等しく共有します。
.Pp
.Fa name1
を削除してもファイル
@ -76,7 +75,7 @@
.Rv -std link
.Sh エラー
.Fn link
は次の場合に処理に失敗し、リンクは作成されません
は次の場合に処理に失敗し、リンクは作成されません:
.Bl -tag -width Er
.It Bq Er ENOTDIR
いずれかの前置パス名の構成要素がディレクトリではありません。
@ -91,13 +90,12 @@
リンクをサポートしていません。
.It Bq Er EMLINK
.Fa name1
で指定されたファイルのリンクカウントが 32767
を越えます。
で指定されたファイルのリンクカウントが 32767 を越えます。
.It Bq Er EACCES
いずれかの前置パス名の構成要素について検索許可が拒否されています。
.It Bq Er EACCES
要求されたリンクは、書込み許可を拒否するモードのディレクトリに
込みすることを要求しています。
き込むことを要求しています。
.It Bq Er ELOOP
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
.It Bq Er ENOENT
@ -142,7 +140,7 @@
.Fn link
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn link
関数は
@ -153,4 +151,4 @@
.Fn link
システムコールによってディレクトリをリンクでき、
これはファイルシステムの一貫性を破壊するものでした。
この実装では、このような操作は もはや許されません。
この実装では、このような操作はもはや許されません。

View file

@ -94,7 +94,7 @@ MIB
の値にされます。
.Sh ACCEPT フィルタとの相互作用
ソケットに対して accept フィルタを使用すると、
接続済であるものの accept フィルタの基準にまだ合致しないソケットを
接続済であるものの accept フィルタの基準にまだ合致しないソケットを
保持するための第 2 の待ち行列が使用されます。
ひとたび基準に合致すれば、これらのソケットは接続完了済の待ち行列に移動され、
.Xr accept 2
@ -109,7 +109,7 @@ accept
.Rv -std listen
.Sh エラー
.Fn listen
は次の場合に処理を失敗します
は次の場合に処理を失敗します:
.Bl -tag -width Er
.It Bq Er EBADF
引数

View file

@ -53,13 +53,14 @@
.Fa fildes
のオフセットを引数
.Fa offset
に移動します。引数
に移動します。
引数
.Fa fildes
はオープンファイル記述子でなければなりません。
.Fn lseek
は、次のようにファイル記述子
.Fa fildes
に対応するファイル位置ポインタを移動します
に対応するファイル位置ポインタを移動します:
.Bl -item -offset indent
.It
.Fa whence
@ -87,21 +88,22 @@
.Fn lseek
関数によって、ファイルオフセットをファイルの既存のファイルの終り (EOF)
を越えるところに設定できます。
後にデータがこの点に書きこまれると、それ以後のギャップ内のデータに対する読取りは
後にデータがこの点に書き込まれると、
それ以後のギャップ内のデータに対する読取りは
(データが実際にギャップ内に書き込まれるまで) データとして 0 を返します。
.Pp
シークできないデバイスもあります。そのようなデバイスに対応するポインタの
値は未定義になります。
シークできないデバイスもあります。
そのようなデバイスに対応するポインタの値は未定義になります。
.Sh 戻り値
処理が正常に完了すると
.Fn lseek
は、ファイルの先頭から測定した結果のオフセット位置を
バイト単位で返します。そうでない場合は -1 が返され、エラーを示すために
は、ファイルの先頭から測定した結果のオフセット位置をバイト単位で返します。
そうでない場合は -1 が返され、エラーを示すために
.Va errno
が設定されます。
.Sh エラー
.Fn lseek
は次の場合に処理を失敗し、ファイル位置ポインタは変更されません
は次の場合に処理を失敗し、ファイル位置ポインタは変更されません:
.Bl -tag -width Er
.It Bq Er EBADF
.Em fildes
@ -129,7 +131,7 @@
.Fn lseek
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Sh 歴史
.Fn lseek
関数は

View file

@ -55,7 +55,7 @@
システムに説明できます。
これまで知られている習性は、
.Aq Pa sys/mman.h
で定義されており、次のとおりです
で定義されており、次のとおりです:
.\" 6 から訳追加
.Bd -literal
#define MADV_NORMAL 0 /* これ以降、特殊な処理は必要ない */
@ -79,23 +79,24 @@
ページがランダムにアクセスされ、プリフェッチが有利ではないと考えられるという
ヒントです。
.It Dv MADV_SEQUENTIAL
指定のページがフォルトで読み込まれたとき、そのページの直前のページの
指定のページがフォルトで読み取られたとき、そのページの直前のページの
優先順位を VM システムが下げるようにします。
.It Dv MADV_WILLNEED
指定の仮想アドレス範囲内にあるページが一時的に高い優先順位を持つようにし、
それらがメモリ内にある場合、解放される可能性を減少させます。
さらに既にメモリ内にあるページはただちにプロセスにマップされ、
それによってプロセス全体にわたるフォルトによる読み込みによる
それによってプロセス全体にわたるフォルトによる読取りによる
不要なオーバヘッドを除去します。
これは、フォルトによるページのバッキングストアからの
み込みを生じさせるのではなく、
取りを生じさせるのではなく、
メモリ内に既にあるページを呼び出し側のプロセスに素早くマップさせます。
.It Dv MADV_DONTNEED
VM システムに、指定の範囲内のページのメモリ内優先順位の減少を許可します。
今後、このアドレス範囲への参照はページフォルトを発生させるでしょう。
.It Dv MADV_FREE
VM システムにページを解放する自由を与え、指定ページ範囲内の情報がもはや
重要でないことをシステムに通知します。これは、アドレス空間を有効にしたままで
重要でないことをシステムに通知します。
これは、アドレス空間を有効にしたままで
.Xr malloc 3
がアドレス空間内の任意の位置のページを解放できるようにする効率的な方法です。
ページが次に参照される時には、そのページは要求時 0 クリアの対象に
@ -103,14 +104,14 @@ VM
.Dv MADV_FREE
呼び出しの前にそこにあったデータが残っているかもしれません。
ページが再び修正されるまで、そのアドレス空間範囲に対する参照だけでは、
VM システムはバッキングストアから情報をページに読み込む動作を行わなくなります。
VM システムはバッキングストアから情報をページに読み取る動作を行わなくなります。
.\" 訳追加
.It Dv MADV_NOSYNC
このマップに関連づけられているデータを
物理的バッキングストアにフラッシュしないようにシステムに要求します。
通常、これにより、ファイルシステムアップデートデーモンが
VM システムが汚したページを特に理由もないのに
物理ディスクに書込む不要な動作を防止します。
物理ディスクに書込む不要な動作を防止します。
VM とファイルシステムの一貫性は常に維持されることに注意してください。
この機能は、マップされたデータが必要なときだけ、
(通常、システムページャにより) フラッシュされることを
@ -133,7 +134,7 @@ MAP_NOSYNC
MADV_NOSYNC の効果を元に戻します。
既に汚されているページについての効果は不定です。
書き戻しするかもしれませんし、しないかもしれません。
書き戻しを確実に行うには、
書き戻しを確実に行うには、
.Xr msync 2
または
.Xr fsync 2
@ -147,7 +148,7 @@ MADV_NOSYNC
.Rv -std madvise
.Sh エラー
.Fn madvise
関数は次の場合に失敗します
関数は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa addr

View file

@ -100,7 +100,7 @@ exec
.Rv -std minherit
.Sh エラー
.Fn minherit
関数は次の場合に処理を失敗します
関数は次の場合に処理を失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa addr

View file

@ -62,7 +62,7 @@
.Rv -std mkdir
.Sh エラー
.Fn mkdir
は次の場合、処理に失敗してディレクトリは作成されません
は次の場合、処理に失敗してディレクトリは作成されません:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -73,7 +73,7 @@
パスの構成要素が存在しません。
.It Bq Er EACCES
指定されたパスには、検索が許可されていないディレクトリが含まれています。
または、作成するディレクトリの親ディレクトリに対する書込み権限が
または、作成するディレクトリの親ディレクトリに対する書込み権限が
拒否されました。
.It Bq Er ELOOP
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
@ -88,7 +88,8 @@
ディレクトリを作成するファイルシステム上に未使用の
inode がありません。
.It Bq Er EDQUOT
新しいディレクトリが作成できません。ディレクトリを作るファイルシステム上の
新しいディレクトリが作成できません。
ディレクトリを作るファイルシステム上の
ディスクブロックのユーザのクォータが枯渇しました。
.It Bq Er EDQUOT
ディレクトリを作成中のファイルシステム上のユーザの inode のクォータが
@ -110,4 +111,4 @@ inode
.Fn mkdir
関数は
.St -p1003.1-90
準拠しています。
適合しています。

View file

@ -50,8 +50,8 @@
.Fn mkfifo
は、
.Fa path
という名前の新しい fifo
ファイルを作成します。アクセス許可は
という名前の新しい fifo ファイルを作成します。
アクセス許可は
.Fa mode
によって指定され、呼び出しプロセスの
.Xr umask 2
@ -63,7 +63,7 @@ fifo
.Rv -std mkfifo
.Sh エラー
.Fn mkfifo
は、次の場合に処理を失敗し、fifo は作成されません
は、次の場合に処理を失敗し、fifo は作成されません:
.Bl -tag -width Er
.It Bq Er ENOTSUP
カーネルが fifo をサポートするように構成されていません。
@ -115,4 +115,4 @@ fifo
.Fn mkfifo
関数は
.St -p1003.1-90
準拠しています。
適合しています。

View file

@ -50,14 +50,14 @@
.Fa path
が、
.Fa mode
で指定されたファイルタイプとアクセス許可で
作成されます。アクセス許可はプロセスの umask 値による修正を受けます。
で指定されたファイルタイプとアクセス許可で作成されます。
アクセス許可はプロセスの umask 値による修正を受けます。
.Pp
.Fa mode
がブロックまたはキャラクタ型特殊ファイルを示す場合、
.Fa dev
はシステム上の特定のデバイスを示す
構成に依存する指示です。そうでない場合
はシステム上の特定のデバイスを示す構成に依存する指示です。
そうでない場合
.Fa dev
は無視されます。
.Pp
@ -67,7 +67,7 @@
.Rv -std mknod
.Sh エラー
.Fn mknod
は次の場合に処理に失敗し、ファイルは作成されません
は次の場合に処理に失敗し、ファイルは作成されません:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。

View file

@ -54,13 +54,12 @@
.Fa addr
から開始する
.Fa len
バイトの仮想アドレス範囲に対応する物理ページを
メモリにロックします。
バイトの仮想アドレス範囲に対応する物理ページをメモリにロックします。
.Fn munlock
呼び出しは、1 つ以上の
.Fn mlock
呼び出しによってロックされていた
ページをアンロックします。これらの両方において、
呼び出しによってロックされていたページをアンロックします。
これらの両方において、
.Fa addr
パラメータはページサイズの整数倍でなければいけません。
.Fa len
@ -73,14 +72,14 @@
しかし、TLB の管理をソフトウェアで実装しているアーキテクチャでは、
保護違反フォルト、または TLB ミスフォルトを起こす可能性はあります。
ページに関するすべてのロックされたマッピングが削除されるまで
物理ページはメモリに留まります。複数のプロセスが、
それぞれの仮想アドレスマッピングから同じ物理ページをロックする
可能性があります。同様に、1 つのプロセスが
同じページに対する異なる複数の仮想マッピングによって、
または同じアドレス範囲へのネストした
物理ページはメモリに留まります。
複数のプロセスが、それぞれの仮想アドレスマッピングから
同じ物理ページをロックする可能性があります。
同様に、1 つのプロセスが同じページに対する異なる複数の
仮想マッピングによって、または同じアドレス範囲へのネストした
.Fn mlock
呼び出しによって、ページを多重にロックする
可能性があります。アンロックは、
呼び出しによって、ページを多重にロックする可能性があります。
アンロックは、
.Fn munlock
によって明示的に、または
.Fn munmap
@ -108,7 +107,7 @@
失敗した場合は、範囲内のすべてのページのロック状態は変更されません。
.Sh エラー
.Fn mlock
は次の場合に処理を失敗します
は次の場合に処理を失敗します:
.Bl -tag -width Er
.It Bq Er EPERM
呼び出し側がスーパユーザではありません。
@ -122,7 +121,7 @@
ページのフォルト / マッピングでエラーがありました。
.El
.Fn munlock
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EPERM
呼び出し側がスーパユーザではありません。
@ -143,13 +142,13 @@
.Sh バグ
Sun の実装と異なり、同じアドレス範囲に関する複数の
.Fn mlock
呼び出しに対して、実際にページをアンロック
するために対応する数の
呼び出しに対して、実際にページをアンロックするために対応する数の
.Fn munlock
呼び出しが必要です。つまり
呼び出しが必要です。
つまり
.Fn mlock
のネストです。これは実装上の結果であって
仕様ではないと考える必要があります。
のネストです。
これは実装上の結果であって仕様ではないと考える必要があります。
.Pp
プロセスごとのリソースの限界はロックされた仮想メモリの量への制限で、
システム全体に共通の制限はロックされた物理ページの数についてのものです。

View file

@ -53,8 +53,7 @@
.Fa len
バイトの連続するページに、
.Fa fd
によって記述されるオブジェクトの
バイトオフセット
によって記述されるオブジェクトのバイトオフセット
.Fa offset
の位置から始まる部分をマップされるようにします。
.Fa len
@ -79,7 +78,7 @@
引数で、以下の値の論理和
.\".Em or Ns 'ing
.Em ( or )
を取った値で指定します
を取った値で指定します:
.Pp
.Bl -tag -width PROT_WRITE -compact
.It Dv PROT_NONE
@ -94,20 +93,19 @@
.Pp
.Fa flags
パラメータは、マップされたオブジェクトのタイプ、マッピングオプション、
およびマップされたページのコピーに対して行われた修正が、プロセスに
およびマップされたページのコピーに対して行われた修正が、プロセスに
固有であるかまたは他からの参照と共有されるかを指定します。
共有、マッピングタイプ、およびオプションは、以下の値の論理和
.\".Em or Ns 'ing
.Em ( or )
を取った値で
.Fa flags
引数に指定します
引数に指定します:
.Bl -tag -width MAP_HASSEMAPHORE
.It Dv MAP_ANON
どの特定のファイルとも対応していない匿名メモリをマップします。
.Dv MAP_ANON
を作成するのに使用される
ファイル記述子は \-1 である必要があります。
を作成するのに使用されるファイル記述子は \-1 である必要があります。
.Fa offset
パラメータは無視されます。
.\".It Dv MAP_FILE
@ -138,8 +136,8 @@
(通常はページャによって) 必要な時のみ物理的なメディアに
フラッシュするようにします。
普通、このオプションにより、更新デーモンはこのマップで
汚されたページをフラッシュしないようになります。これにより、
ファイルバックアップされた共有メモリのマッピングを使用して
汚されたページをフラッシュしないようになります。
これにより、ファイルバックアップされた共有メモリのマッピングを使用して
無関係なプロセスの間でメモリアクセスを効率的に共有することが
できるようになります。
このオプションがないと、汚された VM ページは頻繁 (通常 30-60 秒毎) に
@ -173,18 +171,17 @@ VM/
.Pp
同じことが、
.Dv MAP_NOSYNC
を使いファイルベースの共有メモリストアを実装する場合にもえます。
を使いファイルベースの共有メモリストアを実装する場合にもえます。
.Fn ftruncate
してバッキングストアを作るのではなく、0 を
.Fn write
してバッキングストアを作ることを推奨します。
たとえば、
.Dq Li dd if=filename of=/dev/null bs=32k
を使うなどして巨大なファイルをシーケンシャルに読み込みながら、
を使うなどして巨大なファイルをシーケンシャルに読み取りながら、
.Dq Li iostat 1
を呼び出すことで得られる
KB/t (転送 1 回あたりのキロバイト数) を観察することで
ファイル断片化のテストが可能です。
を呼び出すことで得られる KB/t (転送 1 回あたりのキロバイト数) を
観察することでファイル断片化のテストが可能です。
.Pp
.Xr fsync 2
関数はすべての汚染されたデータとファイルに関連づけられたメタデータ
@ -197,11 +194,12 @@ KB/t (ž
システムコールは
.Bx
で整合性のあるファイルシステムのバッファキャッシュが実装されたので
廃止されました。しかしながら、汚れた VM ページとファイルシステムを
結びつけ、物理的媒体にすぐに(後程ではなく)フラッシュさせる用途に
廃止されました。
しかしながら、汚れた VM ページとファイルシステムを結びつけ、
物理的媒体にすぐに (後程ではなく) フラッシュさせる用途に
使われることもあります。
.It Dv MAP_PRIVATE
修正はプロセス固有に行われます。
修正はプロセス固有に行われます。
.It Dv MAP_SHARED
修正は共有されます。
.It Dv MAP_STACK
@ -219,30 +217,33 @@ KB/t (ž
.Dv PROT_WRITE
が入っている必要があります。
このオプションは、スタックの
先頭を開始点とし下方に伸びる、サイズが最大で
このオプションは、スタックの先頭を開始点とし下方に伸びる、サイズが最大で
.Fa len
バイトまで伸びるメモリ領域を作成します。
スタックの先頭は、呼び出しから返された開始アドレスに
.Fa len
バイトを加えたものになります。最も伸びた場合のスタックの下端は、
バイトを加えたものになります。
最も伸びた場合のスタックの下端は、
呼び出しによって返される開始アドレスになります。
.El
.Pp
.Xr close 2
関数はページをアンマップしません。詳細については
関数はページをアンマップしません。
詳細については
.Xr munmap 2
を参照してください。
.Pp
現在の設計ではプロセスはスワップ空間の位置を指定できません。
将来は、追加のマッピングタイプ
.Dv MAP_SWAP
を定義するかもしれません。この場合、ファイル記述子引数には
スワップを行なうべきファイルまたはデバイスを指定します。
を定義するかもしれません。
この場合、ファイル記述子引数には
スワップを行うべきファイルまたはデバイスを指定します。
.Sh 戻り値
正常に完了すると、
.Fn mmap
は、マップされた領域を指すポインタを返します。そうでない場合は
は、マップされた領域を指すポインタを返します。
そうでない場合は
.Dv MAP_FAILED
が返され、エラーを示すために
@ -250,7 +251,7 @@ KB/t (ž
が設定されます。
.Sh エラー
.Fn mmap
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EACCES
フラグ
@ -307,8 +308,7 @@ KB/t (ž
が指定されて利用できるメモリが不充分でした。
sysctl 値
.Va vm.nax_proc_mmap
で指定された
プロセス毎の mmap 限界に達しました。
で指定されたプロセス毎の mmap 限界に達しました。
.El
.Sh 関連項目
.Xr madvise 2 ,
@ -323,8 +323,9 @@ sysctl
.Xr make.conf 5
.Sh バグ
.Fa len
は 2GB に限定されます。2GB をわずかに上回るマッピングは機能しませんが、
2GB, 4GB, 6GB, および 8GB よりわずかに少ないファイルサイズについて
は 2GB に限定されます。
2GB をわずかに上回るマッピングは機能しませんが、
2GB, 4GB, 6GB および 8GB よりわずかに少ないファイルサイズについて
(ファイルサイズ % 2GB) のサイズのウィンドウをマップできます。
.Pp
制約は多彩な理由から生じています。
@ -336,10 +337,10 @@ sysctl
.Fx
は 32 ビットのページインデックスを使用しており、これによって
.Fx
では最高で 8TB までのファイルサイズを利用できます。実際には
さらに制約が課されて使用可能サイズは 1TB までですが、これは、
ファイルシステムコード内のバグによるものです
(ブロック番号計算を行っているときの桁落ち)。
では最高で 8TB までのファイルサイズを利用できます。
実際にはさらに制約が課されて使用可能サイズは 1TB までですが、
これは、ファイルシステムコード内のバグによるものです
(ブロック番号計算を行っているときの桁落ち)。
.Pp
2GB 制限のもうひとつの理由は、ファイルシステムメタデータが負のオフセットに
存在できるということです。

View file

@ -58,10 +58,10 @@
.Fn modfind
は処理を失敗すると、
.Va errno
を以下のように設定します
を以下のように設定します:
.Bl -tag -width Er
.It Bq Er EFAULT
この操作に必要なデータがカーネル空間から読取れませんでした。
この操作に必要なデータがカーネル空間から読取れませんでした。
.It Bq Er ENOENT
指定されたファイルはカーネルにロードされていません。
.El

View file

@ -69,7 +69,7 @@
のみです。
これは
.Va modid
が、存在しない (読込まれていない) カーネルモジュールを指していることを
が、存在しない (読み取られていない) カーネルモジュールを指していることを
示します。
.Sh 関連項目
.Xr kldfind 2 ,

View file

@ -77,7 +77,7 @@ typedef union modspecific {
で参照されているモジュールの数。
.It id
.Fa modid
で指定されているモジュールのid。
で指定されているモジュールの id。
.It data
モジュール特有のデータ。
.El
@ -98,7 +98,7 @@ typedef union modspecific {
適切なバージョンを
.Fa version
フィールドで指定しているにも関わらずこのエラーが起こるときは、
OS全体か、カーネルまたはプログラム自身を作り直す必要があるかもしれません。
OS 全体か、カーネルまたはプログラム自身を作り直す必要があるかもしれません。
.It Bq Er EFAULT
.Fn copyout
の中で、ひとつまたは複数あるいはすべてのフィールドを

View file

@ -53,18 +53,21 @@
.Fn mount
関数は、ファイルシステムオブジェクトをシステムファイルツリーのマウントポイント
.Ar dir
に付けます。引数
に付けます。
引数
.Ar data
はマウントされるファイルシステムオブジェクトを記述します。引数
はマウントされるファイルシステムオブジェクトを記述します。
引数
.Ar type
.Ar data
をどのように解釈するかをカーネルに通知します (後述の
.Ar type
を参照)。ファイルシステムの内容は、
新しいマウントポイント
を参照)。
ファイルシステムの内容は、新しいマウントポイント
.Ar dir
を通して利用できるようになります。マウントが成功すると
を通して利用できるようになります。
マウントが成功すると
.Ar dir
にあるすべてのファイルが覆い隠された状態になり、
ファイルシステムがマウント解除されるまで利用できなくなります。
@ -76,8 +79,8 @@
.Bl -tag -width MNT_SYNCHRONOUS
.It Dv MNT_RDONLY
ファイルシステムを読取り専用として取り扱います。
スーパユーザでさえこれに書込むことはできません。このオプションなしに
MNT_UPDATE を指定すると、
スーパユーザでさえこれに書込むことはできません。
このオプションなしに MNT_UPDATE を指定すると、
読取り専用ファイルシステムが読取り / 書込みにアップグレードされます。
.It Dv MNT_NOEXEC
そのファイルシステムからファイルを実行できないようにします。
@ -92,12 +95,13 @@ MNT_UPDATE
SUID ビットが設定されたディレクトリは、新しいファイルの所有者を
ディレクトリと同じに設定します。
.It Dv MNT_SYNCHRONOUS
ファイルシステムへの入出力はすべて同期的に行われます。
ファイルシステムへの入出力はすべて同期的に行われます。
.It Dv MNT_ASYNC
ファイルシステムへの入出力はすべて非同期的に行われます。
ファイルシステムへの入出力はすべて非同期的に行われます。
.It Dv MNT_FORCE
ファイルシステムがクリーンでないように見えても、読み書き可でマウントを
強行します。危険です。
強行します。
危険です。
.It Dv MNT_NOCLUSTERR
クラスタ読取りを無効にします。
.It Dv MNT_NOCLUSTERW
@ -107,10 +111,11 @@ SUID
フラグ
.Dv MNT_UPDATE
は、マウントコマンドがすでにマウントされたファイルシステムに
適用されていることを示します。これによって、ファイルシステムを
マウント解除および再マウントする必要なしに、マウントフラグを
変更できます。ファイルシステムによっては、すべてのフラグの変更を
許容しない場合もあります。たとえば多くのファイルシステムが、
適用されていることを示します。
これによって、ファイルシステムをマウント解除および再マウントする必要なしに、
マウントフラグを変更できます。
ファイルシステムによっては、すべてのフラグの変更を許容しない場合もあります。
たとえば多くのファイルシステムが、
読み書き可から読取り専用への変更を許容しません。
.Pp
vfs サブシステムは、フラグ
@ -119,8 +124,8 @@ vfs
関係するデータ構造体を更新します。
.Pp
.Fa type
引数でファイルシステムを指定します。システム上で既知なファイルシステムの
タイプは
引数でファイルシステムを指定します。
システム上で既知なファイルシステムのタイプは
.Xr lsvfs 1
で得ることができます。
.Pp
@ -131,7 +136,8 @@ vfs
慣習によりファイルシステムのマニュアルページは、
.Xr lsvfs 1
によって返されたファイルシステム名に ``mount_'' の接頭辞を付けて
命名されます。それゆえ、
命名されます。
それゆえ、
.Nm NFS
ファイルシステムは
.Xr mount_nfs 8
@ -165,7 +171,7 @@ vfs
.Rv -std
.Sh エラー
.Fn mount
関数は、次のうちの 1 つでも起きたときには処理を失敗します
関数は、次のうちの 1 つでも起きたときには処理を失敗します:
.Bl -tag -width Er
.It Bq Er EPERM
呼び出し側がスーパユーザではありません。
@ -215,10 +221,10 @@ ufs_args
ファイルシステムのスーパブロックに
不都合なマジック番号または範囲外のブロックサイズがありました。
.It Bq Er ENOMEM
ファイルシステムについてのシリンダグループ情報を読取るのに十分な
ファイルシステムについてのシリンダグループ情報を読取るのに十分な
メモリがありませんでした。
.It Bq Er EIO
スーパブロックまたはシリンダグループの情報を読取る間に
スーパブロックまたはシリンダグループの情報を読取る間に
入出力エラーが発生しました。
.It Bq Er EFAULT
.Ar fspec
@ -227,7 +233,7 @@ ufs_args
.Pp
次のエラーは
.Em nfs
ファイルシステムマウントについて起きる可能性があります
ファイルシステムマウントについて起きる可能性があります:
.Bl -tag -width Er
.It Bq Er ETIMEDOUT
.Em nfs
@ -238,7 +244,7 @@ nfs_args
.El
.Pp
.Fn unmount
関数は、次のエラーの 1 つでも起きたときには処理を失敗します
関数は、次のエラーの 1 つでも起きたときには処理を失敗します:
.Bl -tag -width Er
.It Bq Er EPERM
呼び出し側がスーパユーザではありません。
@ -254,7 +260,7 @@ nfs_args
.It Bq Er EBUSY
プロセスがファイルシステム上にあるファイルへの参照を保持しています。
.It Bq Er EIO
キャッシュされたファイルシステム情報を書込みしている間に
キャッシュされたファイルシステム情報を書き込んでいる間に
入出力エラーが起きました。
.It Bq Er EFAULT
.Fa dir

View file

@ -49,14 +49,14 @@
.Fn mprotect
システムコールは指定のページが保護属性
.Fa prot
を持つように変更します。すべての場合において
ページ単位での保護属性を保証するわけではありません。
を持つように変更します。
すべての場合においてページ単位での保護属性を保証するわけではありません。
保護属性変更の細かさはリージョン全体と同じ大きさかもしれません。
.Sh 戻り値
.Rv -std mprotect
.Sh エラー
.Fn mprotect
関数は次の場合に処理を失敗します
関数は次の場合に処理を失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa addr

View file

@ -60,7 +60,7 @@
.Fa len-1
の範囲を含むページだけが調べられます。
.Fa flags
引数は次のように指定できます
引数は次のように指定できます:
.Bd -literal
MS_ASYNC ただちに戻ります
MS_SYNC 同期書込みを実行します
@ -70,7 +70,7 @@ MS_INVALIDATE
.Rv -std msync
.Sh エラー
.Fn msync
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa addr
@ -83,7 +83,7 @@ MS_INVALIDATE
に MS_ASYNC と MS_INVALIDATE の両方が指定されました。
これらのフラグは同時に指定することはできません。
.It Bq Er EIO
ファイルシステムに書込む間に入出力エラーが発生しました。
ファイルシステムに書込む間に入出力エラーが発生しました。
.El
.Sh 関連項目
.Xr madvise 2 ,

View file

@ -54,14 +54,13 @@
.Rv -std munmap
.Sh エラー
.Fn munmap
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa addr
パラメータがページ境界に整列していなかったか、
.Fa len
パラメータが負であったか、
またはアンマップする領域の一部が
パラメータが負であったか、またはアンマップする領域の一部が
プロセスにとって有効な範囲外にあります。
.El
.Sh 関連項目

View file

@ -51,8 +51,8 @@
.Fn nanosleep "const struct timespec *rqtp" "struct timespec *rmtp"
.Sh 解説
.Fn nanosleep
によってプロセスは指定の時間だけ休眠状態になります。シグナルによる
割り込み時の
によってプロセスは指定の時間だけ休眠状態になります。
シグナルによる割り込み時の
.Dv SA_RESTART
値に無関係に、マスクされていないシグナルがあると
プロセスの休眠状態は早めに終了します。
@ -98,4 +98,4 @@ timespec
.Fn nanosleep
関数は
.St -p1003.1b-93
準拠しています。
適合しています。

View file

@ -146,13 +146,10 @@ ncd_authlen
デーモンとしてカーネルに入ります。
.Bd -literal
struct nfsd_srvargs {
struct nfsd *nsd_nfsd; /*
* カーネル内の nfsd struct を
* 指すポインタ
*/
struct nfsd *nsd_nfsd; /* カーネル内の nfsd 構造体へのポインタ */
uid_t nsd_uid; /* cred にマップされる実効 uid*/
u_int32t nsd_haddr; /* クライアントの IP アドレス */
struct ucred nsd_cr; /* Cred. uid のマップ宛先 */
struct ucred nsd_cr; /* cred。uid のマップ宛先 */
int nsd_authlen; /* 認証文字列の長さ (戻り) */
u_char *nsd_authstr; /* 認証文字列 (戻り) */
int nsd_verflen; /* および検証機能 */
@ -191,7 +188,8 @@ Kerberos
を呼び出し、
nsd_cr 内の証書のマッピングをカーネルに渡し、
そのクライアント用のサーバソケット上でマップが
キャッシュされるようにします。認証が失敗した場合、
キャッシュされるようにします。
認証が失敗した場合、
.Xr nfsd 8
はフラグ
.Dv NFSSVC_NFSD

View file

@ -49,11 +49,9 @@
.Fa path
によって指定されるファイルを、引数
.Fa flags
によって指定されたように読取りまたは書込み
(またはその両方) 用にオープンし、
によって指定されたように読取りまたは書込み (またはその両方) 用にオープンし、
そのファイル記述子を呼び出し元プロセスに返します。
ファイルが存在しない場合にはファイルを
作成するように、
ファイルが存在しない場合にはファイルを作成するように、
.Fa flags
引数で指示できます
.Dv ( O_CREAT
@ -95,16 +93,14 @@ O_NOFOLLOW
を設定してファイルをオープンすると、
ファイルへの書込みはすべてファイルの末尾に追加されます。
.Dv O_TRUNC
が指定されていてファイルが存在する場合、ファイルは長さ 0 に
切り捨てられます。
が指定されていてファイルが存在する場合、ファイルは長さ 0 に切り捨てられます。
.Dv O_EXCL
.Dv O_CREAT
とともに設定されていてファイルが既に存在する場合、
.Fn open
はエラーを返します。これを使用して、
簡単な排他的アクセスロッキングメカニズムを
実現できます。
はエラーを返します。
これを使用して、簡単な排他的アクセスロッキングメカニズムを実現できます。
.Dv O_EXCL
が設定されていてパス名の最後の構成要素がシンボリックリンクの場合、
たとえシンボリックリンクが存在しない名前を指していたとしても
@ -120,11 +116,10 @@ O_NOFOLLOW
記述子は、その後の操作のために非ブロッキングモードのままにされます。
.Pp
.Dv O_FSYNC
がマスクに使用された場合、
すべての書き込みは直ちにディスクに書き込まれ、
がマスクに使用された場合、すべての書込みは直ちにディスクに書き込まれ、
カーネルは書き込まれたデータをキャッシュせず、
書き込むべきすべてのデータが完了するまでは
この記述子に対するすべての書込みは戻りません。
この記述子に対するすべての書込みは戻りません。
.Pp
.Dv O_NOFOLLOW
がマスクに使用された場合で
@ -156,7 +151,8 @@ O_NOFOLLOW
正常に完了すると、
.Fn open
は、ファイル記述子を示す負でない整数を返します。
処理に失敗すると -1 を返します。ファイル内の現在の位置をマークする
処理に失敗すると -1 を返します。
ファイル内の現在の位置をマークする
ファイルポインタはファイルの先頭に設定されます。
.Pp
新しいファイルが作成される場合、そのグループは
@ -182,7 +178,7 @@ O_NOFOLLOW
.Va errno
が設定されます。
.Sh エラー
指定のファイルは次の場合を除いてオープンされます
指定のファイルは次の場合を除いてオープンされます:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -213,17 +209,15 @@ O_NOFOLLOW
指定されたファイルは読取り専用ファイルシステム上にあり、
そのファイルを修正しようとしています。
.It Bq Er EMFILE
プロセスは、すでにオープンできるファイル記述子に関する
制限に達しています。
プロセスは、すでにオープンできるファイル記述子に関する制限に達しています。
.It Bq Er ENFILE
システムファイルテーブルが満杯です。
.It Bq Er EMLINK
.Dv O_NOFOLLOW
が指定され、対象がシンボリックリンクです。
.It Bq Er ENXIO
指定のファイルはキャラクタ型特殊ファイルまたはブロック型特殊
ファイルであり、この特殊ファイルに結び付けられたデバイスは
存在していません。
指定のファイルはキャラクタ型特殊ファイルまたはブロック型特殊ファイルであり、
この特殊ファイルに結び付けられたデバイスは存在していません。
.It Bq Er ENXIO
指定されたファイルは FIFO パイプで、どのプロセスからも
読取り用にオープンされていないにも関らず、
@ -266,7 +260,7 @@ O_NOFOLLOW
.It Bq Er EIO
ディレクトリエントリを作成中、または
.Dv O_CREAT
用の inode を割当て中に入出力エラーが発生しました。
用の inode を割当て中に入出力エラーが発生しました。
.It Bq Er ETXTBSY
ファイルは純粋な手続き (共有テキスト) ファイルで、
.Fn open

View file

@ -70,7 +70,7 @@
.Li <unistd.h>
にあります。
.Pp
利用可能な値は次のとおりです
利用可能な値は次のとおりです:
.Pp
.Bl -tag -width 6n
.Pp
@ -85,11 +85,11 @@
.It Li _PC_PATH_MAX
パス名の最大バイト数。
.It Li _PC_PIPE_BUF
パイプに自動的に書込まれる最大バイト数。
パイプに自動的に書込まれる最大バイト数。
.It Li _PC_CHOWN_RESTRICTED
.Xr chown 2
システムコールを実行するのに、適切な特権が必要な場合は 1 を
返し、そうでない場合は 0 を返します。
システムコールを実行するのに、適切な特権が必要な場合は 1 を返し、
そうでない場合は 0 を返します。
.It Li _PC_NO_TRUNC
KERN_NAME_MAX より長いファイル名が切り捨てられる場合は 1 を返します。
.It Li _PC_VDISABLE
@ -122,7 +122,7 @@ KERN_NAME_MAX
.It Li _PC_SYMLINK_MAX
シンボリックリンクに使われる最大バイト数。
.It Li _PC_ACL_EXTENDED
指定されたファイルに対してアクセスコントロールリスト (ACL) が
指定されたファイルに対してアクセス制御リスト (ACL) が
設定できる場合は 1 を返し、そうでなければ 0 を返します。
.It Li _PC_ACL_PATH_MAX
ACL エントリのファイル毎の最大数。
@ -143,8 +143,7 @@ ACL
の呼び出しが正常に完了しない場合は -1 が返され、
.Va errno
が適切な値に設定されます。
変数に結び付けられた機能がシステム内に限界を持たないとき、
-1 が返され、
変数に結び付けられた機能がシステム内に限界を持たないとき、-1 が返され、
.Va errno
は修正されません。
それ以外の場合、現在の変数値が返されます。
@ -165,7 +164,7 @@ ACL
.El
.Pp
.Fn pathconf
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -184,7 +183,7 @@ ACL
.Pp
.Bl -tag -width Er
.Fn fpathconf
は次の場合に失敗します
は次の場合に失敗します:
.It Bq Er EBADF
.Fa fd
は有効なオープンファイル記述子ではありません。

View file

@ -56,13 +56,14 @@
.Em 読取り側
として使用され、2 番めの記述子が
.Em 書込み側
として使用されます。ですので、
として使用されます。
ですので、
.Fa fildes[1]
に書込まれたデータが
に書込まれたデータが
.Fa fildes[0]
に現れます (すなわち、
.Fa fildes[0]
から読取れます)。
から読取れます)。
これを使えば 1 つのプログラムの出力を別のプログラムに送信できます。
送信側の標準出力をパイプの書込み側としてセットアップし、
受信側の標準入力をパイプの読取り側としてセットアップしてください。
@ -70,13 +71,14 @@
.Pp
一端が閉じているパイプは
.Em widowed
(相手を失った) と見なされます。このようなパイプに書込みをすると、
書込みプロセスは
(相手を失った) と見なされます。
このようなパイプに書込みをすると、書込みプロセスは
.Dv SIGPIPE
シグナルを受信します。読取り側にファイルの終了を伝える方法は、
シグナルを受信します。
読取り側にファイルの終了を伝える方法は、
書込み側のパイプをクローズするしかありません。
読取り側がバッファに入っているデータを使い切った後、相手を失ったパイプを
読取ると 0 カウントが返されます。
取ると 0 カウントが返されます。
.Pp
このパイプの実装における双方向という性質は、
古いシステムと互換性がありません。

View file

@ -48,8 +48,7 @@
.Fa fds
引数は
.Aq Pa poll.h
で定義された pollfd 配列を指す
ポインタ (後述) です。
で定義された pollfd 配列を指すポインタ (後述) です。
.Fa nfds
引数は
.Fa fds
@ -66,7 +65,8 @@ struct pollfd {
構造体のフィールドは次のとおりです:
.Bl -tag -width XXXrevents
.It fd
調査するファイル記述子。もし fd が -1 なら
調査するファイル記述子。
もし fd が -1 なら
.Fa revents
はクリアされ (0 に設定)、pollfd はチェックされません。
.It events
@ -78,7 +78,7 @@ struct pollfd {
.Fa events
.Fa revents
内のビットマスクには次のビットがあります
内のビットマスクには次のビットがあります:
.Bl -tag -width XXXPOLLWRNORM
.It POLLIN
高優先データ以外のデータはブロックせずに読取りできます。
@ -90,36 +90,35 @@ struct pollfd {
高優先データはブロックせずに読取りできます。
.It POLLOUT
.It POLLWRNORM
通常データはブロックせずに書込みできます。
通常データはブロックせずに書き込めます。
.It POLLWRBAND
優先順位が 0 でないデータはブロックせずに書込みできます。
優先順位が 0 でないデータはブロックせずに書き込めます。
.It POLLERR
デバイスまたはソケット上に例外状態が起きました。このフラグは、
デバイスまたはソケット上に例外状態が起きました。
このフラグは、
.Fa events
ビットマスクに存在していなくても必ずチェックされます。
.It POLLHUP
デバイスまたはソケットが切断されています。このフラグは、
デバイスまたはソケットが切断されています。
このフラグは、
.Fa events
ビットマスク内に
存在しなくても必ずチェックされます。
ビットマスク内に存在しなくても必ずチェックされます。
POLLHUP
POLLOUT
は、
.Fa revents
ビットマスク内に同時に存在する
ことが決してないことに注意してください。
ビットマスク内に同時に存在することが決してないことに注意してください。
.It POLLNVAL
ファイル記述子がオープンされていません。このフラグは、
ファイル記述子がオープンされていません。
このフラグは、
.Fa events
ビットマスク内に存在しな
くても必ずチェックされます。
ビットマスク内に存在しなくても必ずチェックされます。
.El
.Pp
.Fa timeout
が 0 でも INFTIM (-1) でもない場合、
この値はいずれかのファイル記述子が準備完了になるのを
待機する最大インターバル (ミリ秒単位) です。
が 0 でも INFTIM (-1) でもない場合、この値はいずれかのファイル記述子が
準備完了になるのを待機する最大間隔 (ミリ秒単位) です。
.Fa timeout
が INFTIM (-1) の場合、
.Fn poll
@ -134,7 +133,8 @@ POLLOUT
エラーが起きた場合は -1 を返します。
時間切れになると
.Fn poll
は 0 を返します。割り込み呼び出しによるエラーも含めて
は 0 を返します。
割り込み呼び出しによるエラーも含めて
.Fn poll
がエラーで戻った場合、
.Fa fds
@ -142,10 +142,8 @@ POLLOUT
.Sh 互換性
この実装は、ファイル記述子によって
.Fn poll
がエラーにならないという点で、
過去のものと異なっています。
過去の実装においてエラーになるであろう場合
(たとえば
がエラーにならないという点で、過去のものと異なっています。
過去の実装においてエラーになるであろう場合 (たとえば
.Xr revoke 2
された記述子を検査しようとした場合)、この実装は代わりに
.Fa events
@ -156,7 +154,7 @@ POLLOUT
この動作はより便利であると考えられています。
.Sh エラー
.Fn poll
は次のエラーで戻ります
は次のエラーで戻ります:
.Bl -tag -width Er
.It Bq Er EFAULT
.Fa fds

View file

@ -53,7 +53,8 @@
関数は、現在のプロセスのカウンタプロファイルを有効化または無効化します。
プロファイルが有効な場合、プロファイルクロックチックごとに、カーネルは
.Fa samples
バッファ内の適切なカウントを更新します。プロファイルクロックの周波数は、
バッファ内の適切なカウントを更新します。
プロファイルクロックの周波数は、
プロファイル出力ファイル内のヘッダ内に記録されます。
.Pp
バッファ
@ -61,8 +62,7 @@
には
.Fa size
バイトが含まれており、一連の 16 ビットの塊に分割されます。
各塊は、プロファイルが有効時にプロファイルクロックチックが
発生したときに、
各塊は、プロファイルが有効時にプロファイルクロックチックが発生したときに、
プログラムカウンタがプロセス内の特別なアドレス範囲内にあった回数を
カウントします。
指定のプログラムカウンタアドレスについて、対応する塊の数が
@ -78,11 +78,10 @@
パラメータの範囲は 1 から 65536 であり、
塊の広がりを変更するのに使用できます。
スケール 65536 は、各塊をアドレス範囲の 2 バイトに割り当てます。
スケール 32768 は 4 バイト、
16384 は 8 バイト、後は同様です。中間の値はおおよそ中間の範囲を与えます。
スケール 32768 は 4 バイト、16384 は 8 バイト、後は同様です。
中間の値はおおよそ中間の範囲を与えます。
.Fa scale
値が 0 の場合、
プロファイルは無効になります。
値が 0 の場合、プロファイルは無効になります。
.Sh 戻り値
.Rv -std profil
.Sh 関連ファイル
@ -93,7 +92,7 @@
プロファイル出力ファイルの従来の名前
.El
.Sh エラー
次のエラーが報告される可能性があります
次のエラーが報告される可能性があります:
.Bl -tag -width Er
.It Bq Er EFAULT
バッファ

View file

@ -18,19 +18,17 @@
.Fn ptrace "int request" "pid_t pid" "caddr_t addr" "int data"
.Sh 解説
.Fn ptrace
はトレースとデバッグの機能を提供します。これによって 1 つのプロセス
はトレースとデバッグの機能を提供します。
これによって 1 つのプロセス
.\".Em tracing
(トレース
するプロセス) が
他のプロセス
(トレースするプロセス) が他のプロセス
.\".Em traced
(トレース
されるプロセス) を制御できます。
(トレースされるプロセス) を制御できます。
ほとんどの場合、トレースされるプロセスは正常に実行されます。
ただし、トレースされるプロセスはシグナル
.Xr ( sigaction 2
を参照)
を受信すると停止します。トレースするプロセスは、
を参照) を受信すると停止します。
トレースするプロセスは、
.Xr wait 2
または
.Dv SIGCHLD
@ -52,14 +50,14 @@
.Bl -tag -width 12n
.It Dv PT_TRACE_ME
この要求は、トレースされるプロセスが使用する唯一の要求です。
この要求は、
プロセスがその親によってトレースされることを宣言します。
他の引数はすべて無視され
ます (親プロセスが子プロセスをトレースしない場合は、
この要求は、プロセスがその親によってトレースされることを宣言します。
他の引数はすべて無視されます
(親プロセスが子プロセスをトレースしない場合は、
かなり混乱した結果になります。
トレースされるプロセスが停止すると、このプロセスは、
.Fn ptrace
によってしか実行を継続できません)。プロセスがこの要求を使用し、
によってしか実行を継続できません)。
プロセスがこの要求を使用し、
.Xr execve 2
またはそれに組み込まれているルーチン
(たとえば、
@ -71,38 +69,40 @@ setuid
.It Dv PT_READ_I , Dv PT_READ_D
これらの要求は、トレースされるプロセスのアドレス空間から 1 つの
.Vt int
データを読み取ります。従来、
データを読み取ります。
従来、
.Fn ptrace
は命令とデータについて区別されたアドレス空間のある
マシンを許容していました。これが 2 つの要求がある理由です。概念的には、
マシンを許容していました。
これが 2 つの要求がある理由です。
概念的には、
.Dv PT_READ_I
が命令空間から読み取り、
.Dv PT_READ_D
がデータ空間から読み取ります。現在の
がデータ空間から読み取ります。
現在の
.Fx
システムでは、これらの 2 つの要求は完全に同一です。
.Fa addr
引数が、読取りが行われる (トレースされるプロセスの仮想アドレス空間内の)
引数が、読取りが行われる (トレースされるプロセスの仮想アドレス空間内の)
アドレスを指定します。
このアドレスはどのような境界調整制約も満たす必要はありません。
読み取られた値は
.Eo \&
.Fn ptrace
.Ec
からの戻り値として
返されます。
からの戻り値として返されます。
.It Dv PT_WRITE_I , Dv PT_WRITE_D
これらの要求は
.Dv PT_READ_I
および
.Dv PT_READ_D
と同様ですが、読み取るのではなく
書き込むところが異なります。
と同様ですが、読み取るのではなく書き込むところが異なります。
.Fa data
引数で書き込まれる値を指定します。
.It Dv PT_IO
この要求によって、トレースされるプロセスのアドレス空間内にある
任意量のデータの読取りと書込みが有効となります。
任意量のデータの読取りと書込みが有効となります。
.Fa addr
引数は、以下のように定義される
.Vt "struct ptrace_io_desc"
@ -118,10 +118,10 @@ struct ptrace_io_desc {
/*
* piod_op で指定される操作
*/
#define PIOD_READ_D 1 /* データ空間からの読取り */
#define PIOD_WRITE_D 2 /* データ空間への書込み */
#define PIOD_READ_I 3 /* 命令空間からの読取り */
#define PIOD_WRITE_I 4 /* 命令空間への書込み */
#define PIOD_READ_D 1 /* データ空間からの読取り */
#define PIOD_WRITE_D 2 /* データ空間への書込み */
#define PIOD_READ_I 3 /* 命令空間からの読取り */
#define PIOD_WRITE_I 4 /* 命令空間への書込み */
.Ed
.Pp
.Fa data
@ -156,22 +156,23 @@ struct ptrace_io_desc {
.It Dv PT_ATTACH
この要求は、他の無関係なプロセスの制御を取得し、
そのトレースを開始します。
トレースされるプロセスからの協力は必要としません。このケースでは、
トレースされるプロセスからの協力は必要としません。
このケースでは、
.Fa pid
にトレースされるプロセスのプロセス ID を指定し、
他の 2 つの引数は無視されます。
この要求では、ターゲットプロセスがトレースする
プロセスと同じ実 UID を持つこと、
それが setuid または setgid された実行可能モジュールでないこと
要求されます (トレースするプロセスが root として実行されている
場合、これらの制約は適用されません)。
それが setuid または setgid された実行可能モジュールでないこと
要求されます (トレースするプロセスが root として実行されている場合、
これらの制約は適用されません)。
トレースするプロセスは、新たにトレースされるプロセスを停止させ、
あたかも最初からずっとトレースしていたかのように制御できます。
.It Dv PT_DETACH
この要求は PT_CONTINUE と類似していますが、実行を継続する別の場所を
指定できないこと、
および要求が成功した後、トレースされていたプロセスはもはや
トレースされず、通常どおり実行を継続することが異なります。
指定できないこと、および要求が成功した後、
トレースされていたプロセスはもはやトレースされず、
通常どおり実行を継続することが異なります。
.It Dv PT_GETREGS
この要求は、トレースされるプロセスのマシンレジスタを、
.Fa addr
@ -220,8 +221,7 @@ struct ptrace_io_desc {
.Vt "struct dbreg"
.Dc
.Pf ( Aq Pa machine/reg.h
内に定義されています)
に読み取ります。
内に定義されています) に読み取ります。
.It Dv PT_SETDBREGS
この要求は
.Dv PT_GETDBREGS
@ -240,9 +240,7 @@ struct ptrace_io_desc {
.Sh 戻り値
いくつかの要求で
.Fn ptrace
はエラー以外の場合にも
\-1
を返します。
はエラー以外の場合にも \-1 を返します。
曖昧さをなくすためには、呼び出しの前に
.Va errno
を 0 に設定し、後でチェックします。

View file

@ -67,8 +67,7 @@
.Fa cmd
の値を明確に表すために、
.Ao Pa ufs/ufs/quota.h Ac
で定義されている
QCMD マクロを使用すべきです)。
で定義されている QCMD マクロを使用すべきです)。
オプションとして各コマンド固有のデータ構造体のアドレスを
.Fa addr
に指定できます。
@ -86,7 +85,7 @@ QCMD
をユーザ識別子として解釈する (USRQUOTA) と、
グループ識別子として解釈する (GRPQUOTA) がサポートされています。
.Dq ufs
固有のコマンドは次のとおりです
固有のコマンドは次のとおりです:
.Bl -tag -width Q_QUOTAOFFxx
.It Dv Q_QUOTAON
.Fa path
@ -163,7 +162,7 @@ QCMD
.Rv -std quotactl
.Sh エラー
.Fn quotactl
呼び出しは次の場合に失敗します
呼び出しは次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EOPNOTSUPP
カーネルが

View file

@ -40,7 +40,7 @@
.Nm read ,
.Nm readv ,
.Nm pread
.Nd 入力を読取る
.Nd 入力を読取る
.Sh ライブラリ
.Lb libc
.Sh 書式
@ -61,23 +61,22 @@
.Fa buf
が指すバッファへ
.Fa nbytes
のデータを読取ろうとします。
のデータを読取ろうとします。
.Fn readv
は同様の処理を実行しますが、配列
.Fa iov
: iov[0], iov[1], ..., iov[iovcnt\|\-\|1]
のメンバで指定される
.Fa iovcnt
個のバッファに入力データを分散
させます。
個のバッファに入力データを分散させます。
.Fn pread
は同様の機能を実行しますが、ファイル内の指定の位置から読取った後、
は同様の機能を実行しますが、ファイル内の指定の位置から読取った後、
ファイルポインタを変更しません。
.Pp
.Fn readv
に対する
.Fa iovec
構造体は次のように定義されます
構造体は次のように定義されます:
.Pp
.Bd -literal -offset indent -compact
struct iovec {
@ -96,15 +95,13 @@ struct iovec {
.Fn read
.Fa d
に結び付けられたポインタが指定する位置から開始
します
に結び付けられたポインタが指定する位置から開始します
.Pf ( Xr lseek 2
を参照)。
.Fn read
からの戻り時に、ポインタは実際に読取られたバイト数
だけ増加させられます。
からの戻り時に、ポインタは実際に読み取られたバイト数だけ増加させられます。
.Pp
シークできないオブジェクトは必ず現在の位置から読取られます。
シークできないオブジェクトは必ず現在の位置から読取られます。
そのようなオブジェクトに結び付けられたポインタの値は未定義です。
.Pp
処理が成功すると、
@ -112,16 +109,15 @@ struct iovec {
.Fn readv
および
.Fn pread
は、実際に読取られバッファ内に配置されたバイト
数を返します。記述子が通常ファイルを参照しており、
は、実際に読取られバッファ内に配置されたバイト数を返します。
記述子が通常ファイルを参照しており、
ファイルの終端までに十分な量のバイトがあれば、
システムは要求されたバイト数を読取ることを保証しますが、
システムは要求されたバイト数を読取ることを保証しますが、
他のケースではそうではありません。
.Sh 戻り値
正常に完了すると、実際に読取られたバイト数が返されます。
ファイル終了 (EOF) が読取られると
0 が返されます。そうでない場合は -1 が返され、
エラーを示すためにグローバル変数
正常に完了すると、実際に読み取られたバイト数が返されます。
ファイル終了 (EOF) が読み取られると 0 が返されます。
そうでない場合は -1 が返され、エラーを示すためにグローバル変数
.Va errno
が設定されます。
.Sh エラー
@ -129,7 +125,7 @@ struct iovec {
.Fn readv
および
.Fn pread
は次の場合を除いて正常に完了します
は次の場合を除いて正常に完了します:
.Bl -tag -width Er
.It Bq Er EBADF
.Fa d
@ -138,7 +134,7 @@ struct iovec {
.Fa buf
は、プロセスに割り当てられたアドレス空間の範囲外を指しています。
.It Bq Er EIO
ファイルシステムから読取っている間に入出力エラーが発生しました。
ファイルシステムから読取っている間に入出力エラーが発生しました。
.It Bq Er EINTR
データが到着する前に、シグナルの配送により低速デバイスからの読取りが
割り込まれました。
@ -152,7 +148,7 @@ struct iovec {
.Pp
さらに、
.Fn readv
は次のエラーのうちの 1 つを返すことがあります
は次のエラーのうちの 1 つを返すことがあります:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa iovcnt
@ -173,7 +169,7 @@ struct iovec {
.El
.Pp
.Fn pread
呼び出しも次のエラーを返すことがあります
呼び出しも次のエラーを返すことがあります:
.Bl -tag -width Er
.It Bq Er EINVAL
指定のファイルオフセットが有効ではありません。
@ -192,13 +188,13 @@ struct iovec {
.Fn read
関数は
.St -p1003.1-90
準拠しています。
適合しています。
.Fn readv
関数と
.Fn pread
関数は
.St -xpg4.2
準拠しています。
適合しています。
.Sh 歴史
.Fn pread
関数は

View file

@ -38,7 +38,7 @@
.Os
.Sh 名称
.Nm readlink
.Nd シンボリックリンクの値を読取る
.Nd シンボリックリンクの値を読取る
.Sh ライブラリ
.Lb libc
.Sh 書式
@ -67,7 +67,7 @@
に設定されます。
.Sh エラー
.Fn readlink
は次の場合に失敗します
は次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -83,7 +83,7 @@
.It Bq Er EINVAL
指定のファイルがシンボリックリンクではありません。
.It Bq Er EIO
ファイルシステムから読取る間に入出力エラーが発生しました。
ファイルシステムから読取る間に入出力エラーが発生しました。
.It Bq Er EFAULT
.Fa buf
は、プロセスに割り当てられたアドレス空間の範囲外を指しています。

View file

@ -48,42 +48,47 @@
.Fn reboot "int howto"
.Sh 解説
.Fn reboot
はシステムをリブートします。スーパユーザだけが必要に応じてマシンを
リブートできます。しかし、回復不可能なシステム障害の場合は、
リブートは自動的に起動されます。
はシステムをリブートします。
スーパユーザだけが必要に応じてマシンをリブートできます。
しかし、回復不可能なシステム障害の場合は、リブートは自動的に起動されます。
.Pp
.Fa howto
はオプションのマスクです。システムコールインタフェースは
インクルードファイル
はオプションのマスクです。
システムコールインタフェースはインクルードファイル
.Aq Pa sys/reboot.h
内に定義された次のオプションを受付け、
新しいカーネルまたは新しいブートストラップと
init プログラムに渡されるようにします。
.Bl -tag -width RB_INITNAMEA
.It Dv RB_AUTOBOOT
デフォルト。システムが通常の方法でリブートするようにします。
デフォルト。
システムが通常の方法でリブートするようにします。
.It Dv RB_ASKNAME
ブートストラッププログラム自体によって解釈され、
どのファイルをブートすべきかに
ついて、コンソールにプロンプトを表示するようにします。
どのファイルをブートすべきかについて、
コンソールにプロンプトを表示するようにします。
通常、システムはファイル
.Dq Em xx Ns No (0,0)kernel
からブートされます。ここで、
からブートされます。
ここで、
.Em xx
はファイル名を入力するようにプロンプトを出さない場合の、
デフォルトのディスク名です。
.It Dv RB_DFLTROOT
コンパイル時に指定されたルートデバイスを使用します。通常、システムは、
コンパイル時に指定されたルートデバイスを使用します。
通常、システムは、
可能であればブートされたデバイスをルートデバイスとして使用します
(デフォルトの動作は、システムがどのドライブからロードされたかを判別する
ブートストラッププログラムの能力に依存します。これはすべてのシステムで
可能なわけではありません)。
ブートストラッププログラムの能力に依存します。
これはすべてのシステムで可能なわけではありません)。
.It Dv RB_DUMP
リブートの前にカーネルメモリをダンプします。詳細については、
リブートの前にカーネルメモリをダンプします。
詳細については、
.Xr savecore 8
を参照してください。
.It Dv RB_HALT
プロセッサは単に停止されます。リブートは起きません。
プロセッサは単に停止されます。
リブートは起きません。
このオプションは注意して使用する必要があります。
.It Dv RB_POWEROFF
システム停止の後、シャットダウンコードは、可能であれば電源を切ります。
@ -97,17 +102,17 @@ init
このスイッチは現時点では無効です。
.It Dv RB_KDB
シンボルテーブルをロードし、システム内の組み込みデバッガを有効にします。
カーネルがデバッグ用に構成されていない場合、このオプションは意味を持ち
ません。これ以外のいくつかのオプションは、
このオプションと組み合わせると通常と異なる意味を持つようになりますが、
それらの機能を使用することは
カーネルがデバッグ用に構成されていない場合、このオプションは意味を持ちません。
これ以外のいくつかのオプションは、このオプションと組み合わせると
通常と異なる意味を持つようになりますが、それらの機能を使用することは
.Fn reboot
システムコールでは不可能な場合があります。詳細については、
システムコールでは不可能な場合があります。
詳細については、
.Xr ddb 4
を参照してください。
.It Dv RB_NOSYNC
通常、プロセッサが停止されるかまたはリブートされる前に、ディスクへまだ
書込まれていないデータがあればそれを書き込みます
込まれていないデータがあればそれを書き込みます
.Pf ( Xr sync 8
を参照)。
このオプションは、ファイルシステムへの変更が手作業で行われた場合や、
@ -116,10 +121,10 @@ init
初期段階で、ルートファイルシステムを読取り専用でマウントします。
現在はこれがデフォルトであり、このオプションは無意味なものになっています。
.It Dv RB_SINGLE
通常のリブート処理ではまず自動的にディスクの一貫性チェックが行われ、
通常のリブート処理ではまず自動的にディスクの一貫性チェックが行われ、
次いでマルチユーザ環境へ移行するようになっています。
.Dv RB_SINGLE
は、これを行わず、
は、これを行わず、
システムをコンソール上のシングルユーザシェルでブートします。
.Dv RB_SINGLE
は、実際にはブートし直されたシステムで
@ -130,8 +135,7 @@ init
オプションを指定しない場合 (すなわち、
.Dv RB_AUTOBOOT
が使用される場合)、システムは、プロセッサが所定の方法で選択した
ユニット 0 のディスクの
ルートファイルシステムにある
ユニット 0 のディスクのルートファイルシステムにある
.Dq kernel
というファイルからリブートされます。
この際、通常はディスクの一貫性チェックが自動的に実行されます

View file

@ -67,8 +67,7 @@
は「値 - 結果」パラメータであり、
.Fa from
に対応するバッファのサイズに初期化され、
戻り時には保存されたアドレスの実際のサイズを示すように
変更されます。
戻り時には保存されたアドレスの実際のサイズを示すように変更されます。
.Pp
.Fn recv
呼び出しは、通常
@ -79,8 +78,8 @@
.Fa from
パラメータに nil を指定した
.Fn recvfrom
と同一です。これは冗長なので、将来のリリースでは
サポートされない可能性があります。
と同一です。
これは冗長なので、将来のリリースではサポートされない可能性があります。
.Pp
これら 3 つのルーチンは正常に完了するとメッセージの長さを返します。
メッセージが長すぎて指定のバッファに収まらない場合、
@ -96,8 +95,10 @@
.Va errno
.Er EAGAIN
に設定されます。通常、受信呼び出しは要求された量を受信するまで待たずに、
要求された量を上限として得られたデータを返します。この動作は、
に設定されます。
通常、受信呼び出しは要求された量を受信するまで待たずに、
要求された量を上限として得られたデータを返します。
この動作は、
.Xr getsockopt 2
で解説されているソケットレベルのオプション
.Dv SO_RCVLOWAT
@ -114,7 +115,7 @@ recv
引数は、次の値の 1 つまたは複数の論理和
.\".Em or Ap ing
.Em ( or )
から成ります
から成ります:
.Bl -column MSG_WAITALL -offset indent
.It Dv MSG_OOB Ta プロセス帯域外データ
.It Dv MSG_PEEK Ta 着信メッセージの覗き見 (peek)
@ -125,11 +126,11 @@ recv
フラグは帯域外データの受信を要求し、
通常のデータストリームからは受信しません。
急送データを通常のデータ待ち行列の先頭に配置するプロトコルもありますが、
このフラグはそのようなプロトコルでは使用できません。MSG_PEEK フラグは
受信待ち行列の先頭からデータを除去することなく、そのデータを
返します。したがって、後続の受信呼び出しは同じデータ
を返します。MSG_WAITALL フラグは要求が完全に満たされるまで
ブロックするように要求します。
このフラグはそのようなプロトコルでは使用できません。
MSG_PEEK フラグは受信待ち行列の先頭からデータを除去することなく、
そのデータを返します。
したがって、後続の受信呼び出しは同じデータを返します。
MSG_WAITALL フラグは要求が完全に満たされるまでブロックするように要求します。
しかし、シグナルが捕捉された場合、エラーまたは切断が発生した場合、
または受信する次のデータが返されたタイプと異なる
場合、呼び出しは要求されたより少ないデータを返す可能性があります。
@ -137,15 +138,16 @@ recv
.Fn recvmsg
呼び出しは、直接に指定されるパラメータの数を最小にするために
.Fa msghdr
構造体を使用します。この構造体は
構造体を使用します。
この構造体は
.Ao Pa sys/socket.h Ac
で定義されているように、次の形式になっています
で定義されているように、次の形式になっています:
.Pp
.Bd -literal
struct msghdr {
caddr_t msg_name; /* アドレス(オプション) */
u_int msg_namelen; /* アドレスのサイズ */
struct iovec *msg_iov; /* スキャッタ/ギャザー配列 */
struct iovec *msg_iov; /* スキャッタ / ギャザー配列 */
u_int msg_iovlen; /* msg_iov の要素数 */
caddr_t msg_control; /* 補助データ、後述 */
u_int msg_controllen; /* 補助データのバッファ長 */
@ -166,12 +168,13 @@ struct msghdr {
.Fa msg_iovlen
.Xr read 2
で説明されているようにスキャッタ/ギャザーの場所を記述します。
で説明されているようにスキャッタ / ギャザーの場所を記述します。
.Fa msg_control
は、長さが
.Fa msg_controllen
の、他のプロトコル制御に関連するメッセージまたはその他の
各種補助データ用のバッファを指しています。メッセージは次の形式です。
各種補助データ用のバッファを指しています。
メッセージは次の形式です:
.Bd -literal
struct cmsghdr {
u_int cmsg_len; /* データバイトカウント、hdr を含む */
@ -182,12 +185,13 @@ struct cmsghdr {
.Pp
.Ed
たとえば、これを使用して XNS/SPP において
データストリームの変化を知ることができます。また、ISO において
データストリームの変化を知ることができます。
また、ISO において
.Fn accept
呼び出しの直後に、データバッファを伴わずに recvmsg を要求して、
ユーザ接続要求データを得ることができるでしょう。
.Pp
オープンされたファイル記述子はこれで
オープンファイル記述子はこれで
.Dv AF_UNIX
ドメインソケット用の補助データとして引き渡され、その際、
.Fa cmsg_level
@ -205,14 +209,15 @@ struct cmsghdr {
を使用して、プロセスの認証情報を
.Dv AF_UNIX
ドメインソケット用の補助データとして
渡すこともできます。このケースでは、
渡すこともできます。
このケースでは、
.Fa cmsg_data
は、構造体
.Fa cmsgcred
である必要があります。これは
次のように
である必要があります。
これは次のように
.Ao Pa sys/socket.h Ac
内で定義されています
内で定義されています:
.Pp
.Bd -literal
struct cmsgcred {
@ -245,7 +250,7 @@ struct cmsgcred {
.Sh 戻り値
これらの呼び出しは受信したバイト数を返し、エラーが起きた場合は -1 を返します。
.Sh エラー
呼び出しは次の場合に失敗します
呼び出しは次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EBADF
引数

View file

@ -102,7 +102,7 @@
.Rv -std rename
.Sh エラー
.Fn rename
は次の場合に失敗し、いずれの引数ファイルも影響を受けません
は次の場合に失敗し、いずれの引数ファイルも影響を受けません:
.Bl -tag -width Er
.It Bq Er ENAMETOOLONG
いずれかのパス名の構成要素が 255 文字を越えているか、またはいずれかの
@ -188,4 +188,4 @@
.Fn rename
関数は
.St -p1003.1-96
準拠しています。
適合しています。

View file

@ -52,10 +52,10 @@
.Fn revoke
関数は、
.Fa path
によって指定されたファイルの、システム内に現在オープンされているすべての
ファイル記述子を無効にします。
そのような記述子についての後続の操作は全て失敗します。ただし、
キャラクタ型デバイスファイルへの
によって指定されたファイルの、システム内に現在ある
すべてのオープンファイル記述子を無効にします。
そのような記述子についての後続の操作は全て失敗します。
ただし、キャラクタ型デバイスファイルへの
.Fn read
がカウント 0 (ファイルの終了) を返すのと、
.Fn close
@ -68,14 +68,14 @@
ファイルへのアクセスはその所有者または
スーパユーザによってだけ無効にされます。
.Fn revoke
関数は現時点ではブロック型およびキャラクタ型特殊ファイルについてだけ
関数は現時点ではブロック型およびキャラクタ型特殊ファイルについてのみ
サポートされています。
これは通常、新しいログインセッション用に端末デバイスを準備するとき、
以前の端末使用者によるアクセスを防止するために使用されます。
.Sh 戻り値
.Rv -std revoke
.Sh エラー
次の場合を除いて、指定ファイルへのアクセスは無効にされます
次の場合を除いて、指定ファイルへのアクセスは無効にされます:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。

View file

@ -29,11 +29,11 @@ fork, vfork, rfork
プロセスが他のプロセスについてファイルを開閉することを
許容します) およびオープンファイルが含まれます。
.Fa flags
は次の項目の倫理和 (OR) です。
は次の項目の論理和 (OR) です:
.Bl -tag -width "RFCNAMEG" -compact -offset indent
.It RFPROC
設定されている場合、新しいプロセスが
作成されます。そうでない場合、変更が現在のプロセスに影響を及ぼします。
設定されている場合、新しいプロセスが作成されます。
そうでない場合、変更が現在のプロセスに影響を及ぼします。
現在の実装は、このフラグが必ず設定されていることを要求します。
.It RFNOWAIT
設定されている場合、子プロセスは親プロセスから分離されます。
@ -46,38 +46,34 @@ fork, vfork, rfork
を参照) がコピーされます。
そうでない場合、2 つのプロセスが 1 つのテーブルを共有します。
.It RFCFDG
設定されている場合、新しいプロセスは新しいファイル記述子テーブル
設定されている場合、新しいプロセスは新しいファイル記述子テーブルを持って
開始します。
.Dv RFFDG
とは互いに排他的です。
.It RFMEM
設定されている場合、
通常、ハードウェアのページテーブルを直接共有することで、
カーネルはアドレス空間全体の共有を強制します。
子は、このような方法で、
親プロセスが所有しているすべてのセグメントを、
それが普段共有可能であるか否かに関係なく、
継承し共有します。
カーネルはアドレス空間全体を強制的に共有します。
子は、このような方法で、親プロセスが所有しているすべてのセグメントを、
それが普段共有可能であるか否かに関係なく、継承し共有します。
スタックセグメントは分割されない
(親と子の両方が同じスタック上に復帰する)
ので、
RFMEM フラグを指定した
(親と子の両方が同じスタック上に復帰する) ので、RFMEM フラグを指定した
.Fn rfork
は一般に、C 言語を含む高級言語から直接呼び出すことはできません。
共に設定可能なフラグは
.Dv RFPROC
だけです。
この問題を解決し、提供されたスタック上で新しいプロセスを
走らせるために補助関数が提供されています。詳しくは
走らせるために補助関数が提供されています。
詳しくは
.Fn rfork_thread 3
を参照してください。
.It RFSIGSHARE
設定されている場合、カーネルは、親子間で sigacts 構造体を共有することを
強制します。
設定されている場合、カーネルは、親子間で sigacts 構造体を強制的に共有します。
.It RFLINUXTHPN
設定されている場合、カーネルは、
子についてのスレッド終了時に、SIGCHILD の代わりに
SIGUSR1 を返します。これは特定の Linux クローン動作を模倣するためです。
設定されている場合、カーネルは、子についてのスレッド終了時に、
SIGCHILD の代わりに SIGUSR1 を返します。
これは特定の Linux クローン動作を模倣するためです。
.El
.Pp
共有ファイル記述子テーブル内のファイル記述子は、
@ -89,11 +85,11 @@ SIGUSR1
親プロセス内で返される値は子プロセスのプロセス ID です。
子プロセス内で返される値は 0 です。
.Dv RFPROC
がない場合、戻り値は 0 です。プロセス ID の範囲は
1 から最大整数値
がない場合、戻り値は 0 です。
プロセス ID の範囲は 1 から最大整数値
.Ft ( int )
です。必要であれば、要求されたプロセスリソースが
利用できるようになるまで
です。
必要であれば、要求されたプロセスリソースが利用できるようになるまで
.Fn rfork
は待機します。
.Pp
@ -106,14 +102,14 @@ SIGUSR1
正常に完了した場合、
.Fn rfork
は、子プロセスに値 0 を返し、子プロセスのプロセス ID を親プロセスに
返します。そうでない場合、子プロセスは作成されずに、
値 -1 が親プロセスに返され、
返します。
そうでない場合、子プロセスは作成されずに、値 -1 が親プロセスに返され、
エラーを示すためにグローバル変数
.Va errno
が設定されます。
.Sh エラー
.Fn rfork
は、次の場合に処理を失敗し、子プロセスは作成されません
は、次の場合に処理を失敗し、子プロセスは作成されません:
.Bl -tag -width Er
.It Bq Er EAGAIN
実行中のプロセスの合計数がシステムの課す制限を超過してしまいます。
@ -124,9 +120,9 @@ MIB
によって指定されます (スーパユーザを除いて、制限は実際には
これより 10 個少なくなります)。
.It Bq Er EAGAIN
ユーザがスーパユーザではなく、
1 人のユーザによる実行中のプロセスの合計数がシステムの課した制限を
超過してしまいます。制限は、
ユーザがスーパユーザではなく、1 人のユーザによる実行中の
プロセスの合計数がシステムの課した制限を超過してしまいます。
制限は、
.Xr sysctl 3
MIB 変数
.Dv KERN_MAXPROCPERUID
@ -154,13 +150,13 @@ RFFDG
.Xr rfork_thread 3
.Sh バグ
.Fx
は native
では、ネイティブ
.Fn clone
ライブラリコール未だに実装されていませんし、
ライブラリコール未だに実装されていませんし、
現在の pthreads 実装は RFMEM を指定した
.Fn rfork
を利用していません。
linux スレッドライブラリの native port である、
linux スレッドライブラリのネイティブポートである、
.Pa /usr/ports/devel/linuxthreads
は RFMEM を利用して動作する
.Fn clone
@ -171,6 +167,4 @@ linux
の代わりとして利用することができます。
.Sh 歴史
.Fn rfork
関数は
Plan9
ではじめて登場しました。
関数は Plan9 ではじめて登場しました。

View file

@ -58,7 +58,7 @@
.Sh 戻り値
.Rv -std rmdir
.Sh エラー
次の場合を除いて、指定されたファイルが削除されます
次の場合を除いて、指定されたファイルが削除されます:
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -80,11 +80,10 @@
.It Bq Er EACCES
削除するリンクが入っているディレクトリの書込みが許可されていません。
.It Bq Er EPERM
削除するディレクトリが入っているディレクトリは
スティッキービットが設定されており、
削除したいディレクトリを含んでいるディレクトリ
または削除するディレクトリの
どちらかあるいは両方の所有者が実効ユーザ ID とは異なっています。
削除するディレクトリが入っているディレクトリはスティッキービットが
設定されており、削除したいディレクトリを含んでいるディレクトリ
または削除するディレクトリのどちらかあるいは両方の所有者が
実効ユーザ ID とは異なっています。
.It Bq Er EBUSY
削除しようとしているディレクトリは、
ファイルシステムがマウントされているマウントポイントです。

View file

@ -45,18 +45,19 @@
.Fn rtprio "int function" "pid_t pid" "struct rtprio *rtp"
.Sh 解説
.Fn rtprio
を使用して、
プロセスのリアルタイム / アイドル優先順位を取得または変更します。
を使用して、プロセスのリアルタイム / アイドル優先順位を取得または変更します。
.Pp
.Fa function
で実行する操作を指定します。現在の優先順位を取得するには
RTP_LOOKUP、優先順位を設定するには RTP_SET です。
で実行する操作を指定します。
現在の優先順位を取得するには RTP_LOOKUP、優先順位を設定するには RTP_SET です。
.Fa pid
は、対象のプロセスを指定します。現在のプロセスを指定するには 0 を使います。
は、対象のプロセスを指定します。
現在のプロセスを指定するには 0 を使います。
.Pp
.Fa *rtp
は、優先順位と優先順位のタイプを指定するのに使用する struct rtprio を指す
ポインタです。この構造体は次の型です。
ポインタです。
この構造体は次の型です:
.Bd -literal
struct rtprio {
u_short type;
@ -71,7 +72,8 @@ struct rtprio {
.Nm prio
によって指定する優先順位は、0 から
.Dv RTP_PRIO_MAX (通常は 31)
の範囲になります。0 が指定可能な最高の優先順位です。
の範囲になります。
0 が指定可能な最高の優先順位です。
.Pp
リアルタイム優先順位とアイドル優先順位は、
fork() と exec() を通じて継承されます。
@ -89,7 +91,7 @@ fork()
.Rv -std rtprio
.Sh エラー
.Fn rtprio
は次の場合に処理を失敗します
は次の場合に処理を失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
指定された

Some files were not shown because too many files have changed in this diff Show more