Update to 4.2-20010112-STABLE base and revise Japanese wording.

Submitted by:jpman Project <man-jp@jp.FreeBSD.org>
This commit is contained in:
Kazuo Horikawa 2001-03-16 23:56:38 +00:00
parent 10276dc64b
commit d652d85bad
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=9022
66 changed files with 1127 additions and 612 deletions

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)intro.2 8.5 (Berkeley) 2/27/95
.\" %FreeBSD: src/lib/libc/sys/intro.2,v 1.21.2.3 2000/12/29 14:44:52 ru Exp %
.\"
.Dd February 27, 1995
.Dt INTRO 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm intro
.Nd システムコールとエラー番号の紹介
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <errno.h>
.Sh 解説
@ -57,9 +60,9 @@
.Dl #define errno (* __error())
.Pp
.Va __error()
関数は、初期スレッド以外のスレッドについてスレッドに固有な構造体の
フィールドを指すポインタを返します。初期スレッドと非スレッド
プロセスの場合、
関数は、初期スレッド以外のスレッドについては、スレッドに固有な構造体の
フィールドを指すポインタを返します。初期スレッドと非スレッドプロセスの
場合、
.Va __error()
は、以前の定義と互換性のあるグローバル変数
.Va errno
@ -69,7 +72,7 @@
を返し、それに応じて変数
.Va errno
を設定します。
<これによって -1 を受け取ったときの障害の解釈と
<これにより、 -1 を受け取ったときに障害を解釈し
それに応じた行動をとることを可能にします。>
呼び出しが正常に完了した場合は
.Va errno
@ -88,14 +91,15 @@
未使用。
.It Er 1 EPERM Em "Operation not permitted"
「操作が許されません」
適当な特権のあるプロセス、またはファイルか他のリソースの所有者に
適切な特権をもつプロセスに限定された操作、
またはファイルその他のリソースの所有者に
限定された操作を実行しようとしました。
.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"
「関数呼び出しが割り込まれました」
@ -111,19 +115,20 @@
「入出力エラーです」
何らかの物理的な入力エラーまたは出力エラーが起きました。
このエラーは、
同じファイル記述子への後続の操作まで報告されず、後続のエラーによって失われる
同じファイル記述子に対する操作が次に行なわれるまで報告されず、
後続のエラーによって失われる
(上書きされる) 可能性があります。
.It Er 6 ENXIO Em "\&No such device or address"
「そのようなデバイスまたはアドレスがありません」
存在しないデバイスを参照している特殊ファイルへの入出力が行なわれたか、
またはデバイスの制限を越えた要求が行われました。
このエラーは、
たとえばテープドライブがオンラインでないか、またはディスク
パックがドライブにロードされていない
ときにも発生する可能性があります。
テープドライブがオンラインでない場合や、またはディスク
パックがドライブにロードされていない場合など
にも発生する可能性があります。
.It Er 7 E2BIG Em "Arg list too long"
「引数のリストが長すぎます」
新しいプロセスの引数と環境変数リストに使用される
新しいプロセスの引数リストと環境変数リストに使用される
バイト数が、
現在の限界である
65536 バイト
@ -133,14 +138,14 @@
を越えました。
.It Er 8 ENOEXEC Em "Exec format error"
「実行形式エラーです」
実行を要求されたファイルは、適切なパーミッションでしたが、
実行可能ファイルについて要求される形式ではありませんでした。
実行を要求されたファイルのパーミッションは適切でしたが、
実行可能ファイルとして要求される形式ではありませんでした。
.It Er 9 EBADF Em "Bad file descripter"
「ファイル記述子が不良です」
ファイル記述子引数が範囲外であったか、
開いていないファイルを参照していたか、
または書込み (読取り) 専用に開かれたファイルに
取り (書込み) 要求が行われました。
または書込み (読取り) 専用に開かれたファイルに
読取り (書込み) 要求が行われました。
.It Er 10 ECHILD Em "\&No child processes"
「子プロセスがありません」
.Xr wait 2
@ -150,7 +155,7 @@
子プロセスが存在しないか、待機されたことのない子プロセスを持たない
プロセスによって実行されました。
.It Er 11 EDEADLK Em "Resource deadlock avoided"
「リソースデッドロックが回避されました」
「リソースデッドロックを回避しました」
デッドロック状況になる可能性のあるシステムリソースをロックしようとしました。
.It Er 12 ENOMEM Em "Cannot allocate memory"
「メモリの割り当てができません」
@ -166,7 +171,7 @@
ファイルにアクセスしようとしました。
.It Er 14 EFAULT Em "Bad address"
「不正なアドレスです」
呼び出し引数を使おうとしているときに、
呼び出しで渡された引数を使おうとしているときに、
システムが無効なアドレスを検出しました。
.It Er 15 ENOTBLK Em "Not a block device"
「ブロックデバイスではありません」
@ -178,27 +183,27 @@
その要求と干渉するであろう方法で使おうとしました。
.It Er 17 EEXIST Em "File exists"
「ファイルが存在します」
既存のファイルが不適切なコンテキストで
記述されました。たとえば、
すでに存在するファイルが不適切なコンテキストで
指定されました。たとえば、
.Xr link 2
関数内の新しいリンク名としてです。
関数における新しいリンク名としてです。
.It 18 Er EXDEV Em "Improper link"
「不適切なリンクです」
別のファイルシステム上のファイルへのハード
リンクが試みられました。
別のファイルシステム上のファイルへのハードリンクが
試みられました。
.It Er 19 ENODEV Em "Operation not supported"
「操作がデバイスによってサポートされていません」
不適切な関数をデバイスに適用しようとする
試みが行われました。たとえば、プリンタのような
込み専用デバイスを読み込もうとしました。
あるデバイスに不適切な関数を適用しようしました。
たとえば、プリンタのような
書込み専用デバイスを読み込もうとしました。
.It Er 20 ENOTDIR Em "Not a directory"
「ディレクトリではありません」
指定のパス名の構成要素存在しましたが、
ディレクトリである必要があるのに
指定のパス名の構成要素は確かに存在しましたが、
ディレクトリが求められているにもかかわらず
それがディレクトリではありませんでした。
.It Er 21 EISDIR Em "Is a directory"
「ディレクトリです」
込みモードを指定してディレクトリを開こうとしました。
書込みモードを指定してディレクトリをオープンしようとしました。
.It Er 22 EINVAL Em "Invalid argument"
「無効な引数です」
無効な引数が指定されました (たとえば、
@ -207,28 +212,29 @@
.Xr kill 2
関数に未定義のシグナルを指定する場合)。
.It Er 23 ENFILE Em "Too many open files in system"
「システム内で開かれているファイルが多すぎます」
システム上で許容できるファイル記述子
「システム内でオープンされているファイルが多すぎます」
システムが許容するファイル記述子の数
最大数に到達しており、少なくとも
1 つが閉じられるまで、開こうとしている要求は満たされません。
1 つがクローズされるまで、オープンしようとする要求は満たされません。
.It Er 24 EMFILE Em "Too many open files"
開いているファイルが多すぎます」
オープンしているファイルが多すぎます」
<現在のリリースでは、
プロセス1個につき開いているファイル数の上限は 64 です。>
プロセス1個につきオープンできるファイル数の上限は 64 です。>
.Xr getdtablesize 2
で現在の限界を取得できます。
.It Er 25 ENOTTY Em "Inappropriate ioctl for device"
「デバイスに不適切な ioctl です」
ファイルまたは特殊デバイスについて制御関数 (
ファイルまたは特殊デバイスに不適切な操作を要求する制御関数 (
.Xr ioctl 2
を参照) が試みられましたが、操作が不適切でした。
を参照) を試みました。
.It Er 26 ETXTBSY Em "Text file busy"
「テキストファイルがビジーです」
新しいプロセスが、別のプロセスによって書き込み用に開かれた純粋な手続き
(共有テキスト)
ファイルであったか、または純粋手続きファイルが実行されている間に、
別のプロセスによって書込み用にオープンされた純粋プロシジャ (共有テキスト)
ファイルから新しいプロセスを作ろうとしたか、
または純粋プロシジャファイルが実行されている間に、
書込みアクセスを要求する
.Xr open 2
呼び出しが書き込みアクセスを要求しました。
呼び出しが実行されました。
.It Er 27 EFBIG Em "File too large"
「ファイルが大きすぎます」
ファイルのサイズが最大値を超過しました
@ -237,39 +243,39 @@
.if n 2.1E9
バイト)。
.It Er 28 ENOSPC Em "Device out of space"
「デバイスが空間不足です」
「デバイスの空き領域不足です」
該当するファイルシステムで
それ以上のディスクブロックが利用できないために、
新たなディスクブロックが利用できないために、
通常ファイルへの
.Xr write 2
、ディレクトリまたはシンボリックリンクの作成、
処理、ディレクトリの作成、シンボリックリンクの作成、
ディレクトリエントリの作成が失敗しました。
または、
該当するファイルシステムで
それ以上の inode が利用できないために、
新しく作成されたファイルについての
新たな inode が利用できないために、
新しく作成するファイルに対する
inode の割り当てが失敗しました。
.It Er 29 ESPIPE Em "Illegal seek"
「不正なシークです」
.Xr lseek 2
関数がソケット、パイプ、または
.Tn FIFO
ついて実行されました。
対して実行されました。
.It Er 30 EROFS Em "Read-only file system"
「読取り専用ファイルシステムです」
「読取り専用ファイルシステムです」
ファイルまたはディレクトリを
修正しようとする試みが、その時点で
み取り専用のファイルシステムについて行われました。
変更しようとする試みが、その時点で
取り専用であるファイルシステムに対して行われました。
.It Er 31 EMLINK Em "Too many links"
「リンクが多すぎます」
1 つのファイルへの許容される最大ハードリンクを超過しました
(ファイルごとのハードリンクの限界は 32767 です)。
1 つのファイルについて許容されるハードリンクの最大数を超過しました
(1 ファイルにつきハードリンク数の限界は 32767 です)。
.It Er 32 EPIPE Em "Broken pipe"
「パイプが破壊されてました」
データを読み取るプロセスのない
パイプ、ソケット、または
.Tn FIFO
に対しての書込みです。
に対しての書込みです。
.It Er 33 EDOM Em "Numerical argument out of domain"
「数値引数が領域外です」
数値入力引数が、数学関数の定義域の外側にありました。
@ -285,28 +291,28 @@ inode
「操作が現在進行中です」
完了するのに時間のかかる操作 (
.Xr connect 2
など) がノンブロッキングオブジェクトについて試みられました (
など) をノンブロッキングオブジェクトに対し試みました (
.Xr fcntl 2
を参照)。
.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
@ -322,72 +328,70 @@ inode
間違ったオプションまたはレベルが指定されました。
.It Er 43 EPROTONOSUPPORT Em "Protocol not supported"
「プロトコルがサポートされていません」
プロトコルがシステム内に構成されていないか、
またはプロトコルについての実装が存在しません。
指定したプロトコルがシステム内に組み込まれていないか、
またはそのプロトコルの実装が存在しません。
.It Er 44 ESOCKTNOSUPPORT Em "Socket type not supported"
「ソケットタイプがサポートされていません」
ソケットタイプのサポートがシステム内に
構成されていないか、またはそれの実装が存在しません。
指定したソケットタイプがシステム内に組み込まれてないか、
またはそのソケットタイプの実装が存在しません。
.It Er 45 EOPNOTSUPP Em "Operation not supported"
「操作がサポートされていません」
試みられた操作が、
参照されたオブジェクトのタイプについてサポートされていません。
通常、これが起きるのは、ファイル記述子が
引数が指すオブジェクトのタイプは、指定した操作をサポートしていません。
このエラーが起きるのは、通常は、ファイル記述子が
この操作をサポートできないファイルまたは
ソケットを参照るときです。たとえば、データグラム
ソケットを参照しているときです。たとえば、データグラム
ソケット上で接続を
.Em accept
しようしたときです。
.It Er 46 EPFNOSUPPORT Em "Protocol family not supported"
「プロトコルファミリがサポートされていません」
プロトコルファミリがシステム内に構成されていないか、
またはその実装が存在していません。
指定したプロトコルファミリがシステムに組み込まれていないか、
またはそのプロトコルファミリの実装が存在していません。
.It Er 47 EAFNOSUPPORT Em "Address family not supported by protocol family"
「アドレスファミリがプロトコルファミリによってサポートされていません」
要求されたプロトコルと互換性のないアドレスが使用されました。たとえば、
要求たプロトコルと互換性のないアドレスが使用されました。たとえば、
.Tn ARPA
インターネット
プロトコルで
インターネットプロトコルで
.Tn NS
アドレスを使用できるとは必ずしも期待すべきではないでしょう。
.It Er 48 EADDRINUSE Em "Address already in use"
「アドレスが既に使用中です」
各アドレス毎に、利用は 1 つだけが通常許容されます。
各アドレスごとに、一度に 1 つだけを利用できます。
.It Er 49 EADDRNOTAVAIL Em "Cannot assing requested address"
「要求されたアドレスを割り当てできません」
通常は、このマシン上にないアドレスで
ソケットを作成しようとした結果です。
.It Er 50 ENETDOWN Em "Network is down"
「ネットワークがダウンしています」
ソケット操作で動いていないネットワークに遭遇しました。
ソケット操作の結果、動作していないネットワークに遭遇しました。
.It Er 51 ENETUNREACH Em "Network is unreachable"
「ネットワークに到達できません」
ソケット操作が到達できないネットワークに試みられました。
到達できないネットワークに向けてソケット操作を試みました。
.It Er 52 ENETRESET Em "Network dropped connection on reset"
ネットワークのリセット時に接続が廃棄されました」
接続されていたホストがクラッシュして再起動されました。
リセットによりネットワークの接続が失われました」
接続ていたホストがクラッシュして再起動されました。
.It Er 53 ECONNABORTED Em "Software caused connection abort"
「ソフトウェアが接続中止を引き起こしました」
接続中止がホストマシンに内部的に発生しました。
「ソフトウェアによる接続中断が生じました」
自マシン側の原因により接続中断が発生しました。
.It Er 54 ECONNRESET Em "Connection reset by peer"
「接続が対等な相手によってリセットされました」
接続が対等な相手 (peer) によって強制的に閉じられました。
これは時間切れまたは再起動によって、
「接続が通信相手によってリセットされました」
接続が通信相手 (peer) によって強制的にクローズされました。
これはタイムアウトまたは再起動によって、
リモート側のソケットで接続が失われた結果であるのが普通です。
.It Er 55 ENOBUFS Em "\&No buffer space available"
「バッファ空間の空きがありません」
システムに十分なバッファ空間がないか、待ち行列が一杯になったために、
「バッファの空きがありません」
システムに十分なバッファがないか、待ち行列が一杯になったために、
ソケットまたはパイプについての操作が行われませんでした。
.It Er 56 EISCONN Em "Socket is already connected"
「ソケットは既に接続されています」
既に接続されたソケットについ
既に接続されたソケットに対し
.Xr connect 2
要求が行なわれました。
または、接続済みのソケットにする
要求を行ないました。
または、接続済みのソケットにする
.Xr sendto 2
.Xr sendmsg 2
要求、既に接続されているのに宛先を指定しました。
要求に際し、既に接続されているのに宛先を指定しました。
.It Er 57 ENOTCONN Em "Socket is not connected"
「ソケットは接続されていません」
ソケットが接続されておらず、
@ -396,22 +400,22 @@ inode
受信する要求が許可されませんでした。
.It Er 58 ESHUTDOWN Em "Cannot send after socket shutdown"
「ソケットのシャットダウンの後で送信ができません」
ソケットが以前の
以前に
.Xr shutdown 2
呼び出しで既にシャットダウンさせられているために、
データを送信する要求が許可されませんでした。
を呼び出して既にシャットダウンさせてしまったために、
ソケットに対しデータを送信する要求が許可されませんでした。
.It Er 60 ETIMEDOUT Em "Operation timed out"
「操作がタイムアウトしました」
ある時間間隔の後、接続された一方が適切に応答しなかったために、
ある時間が経過するまでに接続相手が適切に応答しなかったために、
.Xr connect 2
要求または
.Xr send 2
要求処理に失敗しました
要求処理に失敗しました
(タイムアウトの期間は通信プロトコルに左右されます)。
.It Er 61 ECONNREFUSED Em "Connection refused"
「接続が拒絶されました」
ターゲットマシンが明示的に接続を拒絶したので、
接続を確立できませんでした。これは、通常、外部のホストで
接続相手のマシンが接続を自ら拒否したので、
接続を確立できませんでした。これは、通常、相手ホストで
有効でないサービスに接続しようとした結果です。
.It Er 62 ELOOP Em "Too many levels of symbolic links"
「シンボリックリンクのレベルが多すぎます」
@ -428,34 +432,33 @@ inode
.It Er 64 EHOSTDOWN Em "Host is down"
「ホストがダウンしています」
宛先ホストがダウンしているために
ソケット操作が処理失敗しました。
ソケット操作が失敗しました。
.It Er 65 EHOSTUNREACH Em "No route to host"
「ホストへの経路はありません」
到達不可能なホストにソケット操作をしようとしました。
.It Er 66 ENOTEMPTY Em "Directory not empty"
「ディレクトリが空ではありません」
.Ql \&.
ディレクトリ削除または名前変更の呼び出しに対し、
.Ql .\&
.Ql \&..
以外を含むディレクトリの
ディレクトリ削除または名前変更の呼び出しに
.Ql ..\&
以外のエントリを含むディレクトリが
指定されました。
.It Er 67 EPROCLIM Em "Too many processes"
「プロセスが多すぎます」
.It Er 68 EUSERS Em "Too many users"
「ユーザが多すぎます」
クォータシステムでテーブルエントリが不足しました。
クォータシステムがテーブルエントリを使い切りました。
.It Er 69 EDQUOT Em "Disc quota exceeded"
「ディスククォータが超過しました」
ディスクブロックのユーザのクォータを使い尽くしたために、
ユーザのディスクブロッククォータを使い尽くしたために、
通常のファイルへの
.Xr write 2
、ディレクトリまたはシンボリックリンクの作成、
またはディレクトリエントリの作成が失敗しました。
もしくは、inode のユーザのクォータを使い尽くしたために、
、ディレクトリの作成、シンボリックリンクの作成、
ディレクトリエントリの作成が失敗しました。
もしくは、ユーザの inode クォータを使い尽くしたために、
新しく作成されたファイルのための
inode の割り当てに失敗しました。
.ne 1i
.It Er 70 ESTALE Em "Stale NFS file handle"
「腐りかけた NFS ファイルハンドルです」
オープンされている (
@ -465,29 +468,29 @@ inode
これは
.Tn NFS
サーバ上でファイルが削除されたか、
または他の破壊的なイベントが起きたことを示していると思われます。
または他の破滅的な何かが起きたことを示していると思われます。
.It Er 72 EBADRPC Em "RPC struct is bad"
「RPC 構造体が不良です」
.Tn RPC
情報の交換が不成功でした。
.It Er 73 ERPCMISMATCH Em "RPC varsion wrong"
「RPC バージョンが間違っています」
遠隔の相手の
通信相手の
.Tn RPC
のバージョンが、こちらのバージョンと
互換性がありません。
.It Er 74 EPROGUNAVAIL Em "RPC prog. not avail"
「RPC プログラムが利用できません」
要求されたプログラムが
要求たプログラムが
リモートホストに登録されていません。
.It Er 75 EPROGMISMATCH Em "Program version wrong"
「プログラムバージョンが間違っています」
プログラムの要求したバージョンが、リモートホスト
要求したバージョンのプログラムが、リモートホスト
.Pq Tn RPC
上で利用できません。
.It Er 76 EPROCUNAVAIL Em "Bad procedure for program"
「プログラムにとって間違った手続きです」
リモートプログラム内に存在しない手続きについて
リモートプログラム内に存在しない手続きに対し
.Tn RPC
呼び出しが試みられました。
.It Er 77 ENOLCK Em "No locks available"
@ -495,7 +498,39 @@ inode
システムが課した、同時ファイルロック数の制限に達しました。
.It Er 78 ENOSYS Em "Function not implemented"
「関数が実装されていません」
このシステムで利用できないシステムコールをしようとしました。
このシステムで利用できないシステムコールを実行しようとしました。
.It Er 79 EFTYPE Em "Inappropriate file type or format"
「ファイルの型または形式が不適切です」
操作が誤った型のファイルに行われたか、またはデータファイルの
形式が誤っています。
.It Er 80 EAUTH Em "Authentication error"
「認証エラーです」
.Tn NFS
ファイルシステムをマウントするために不正な
認証チケットを使おうとしました。
.It Er 81 ENEEDAUTH Em "Need authenticator"
「認証物が必要です」
指定した
.Tn NFS
ファイルシステムをマウントするために認証チケットが必要です。
.It Er 82 EIDRM Em "Identifier removed"
「識別子は削除されました」
IPC の識別子は、現在のプロセスがそれで待っている間に削除されました。
.It Er 83 ENOMSG Em "No message of desired type"
「要求された型のメッセージがありません」
要求した型のメッセージが IPC メッセージキューにありません。
または、メッセージカタログは要求したメッセージを含んでいません。
.It Er 84 EOVERFLOW Em "Value too large to be stored in data type"
「データタイプに格納するには大きすぎる値です」
関数からの数値の戻り値が、呼び出し側で用意した場所に格納するには大きすぎます。
.It Er 85 ECANCELED Em "Operation canceled"
「処理はキャンセルされました」
予定されていた処理はキャンセルされました。
.It Er 86 EILSEQ Em "Illegal byte sequence"
「不正なバイト列です」
多バイト文字をデコードしている際に、関数は不正または不完全なバイト列
もしくは不正なワイド文字に遭遇しました。
.El
.Sh 定義
.Bl -tag -width Ds
.It "プロセス ID (Process ID)"
@ -513,10 +548,10 @@ inode
.Xr init 8
の ID に設定されます。
.It "プロセスグループ (Process Group)"
アクティブなプロセスはそれぞれがプロセスグループのメンバであり、
アクティブなプロセスはそれぞれがあるプロセスグループのメンバであり、
プロセスグループはプロセスグループ ID と呼ばれる
負でない整数によって識別されます。
プロセスグループ ID はそのグループのリーダのプロセス ID です。
プロセスグループ ID はそのグループのリーダのプロセス ID です。
このグループ化によって、
関連づけられたプロセスの集団にシグナルを送る (
.Xr termios 4
@ -524,44 +559,44 @@ inode
.Xr csh 1
のジョブ制御機構を可能にします。
.It "セッション (Session)"
セッションは 1 つまたは複数のプロセスグループのセットです。
セッションは 1 つ以上のプロセスグループの集合です。
セッションは
.Xr setsid 2
の呼び出しが成功すると作成されます。これによって、
呼び出したプロセスは、新規のセッションにおける、
ただ一つしかないプロセスグループのただ一つのメンバになります。
呼び出したプロセスは、新規のセッション
1 つだけ持つプロセスグループの唯一のメンバになります。
.It "セッションリーダ (Session leader)"
.Xr setsid 2
の呼び出しの成功によって、新しいセッションを作成したプロセスは、
セッションリーダとして知られます。セッション
リーダーだけが、端末を制御端末 (
セッションリーダとして知られます。
端末を自分が制御する端末 (
.Xr termios 4
を参照) として取得できます
を参照) として取得できるのは、セッションリーダだけです
.It "制御プロセス (Controlling process)"
制御端末を持つセッションリーダが制御プロセスです。
制御端末を持つセッションリーダが制御プロセスです。
.It "制御端末 (Controlling terminal)"
セッションに関連づけられている端末は、そのセッションとそのメンバに対する
制御端末として知られます。
.ne 1i
.It "端末プロセスグループ ID (Terminal Process Group ID)"
端末は、セッションリーダーによって制御端末として取得されます。
一旦、端末がセッションに関連づけられると、
そのセッション内のどのプロセスグループをも、
端末は、セッションリーダによって制御端末として取得されます。
ひとたび端末がセッションに関連づけられると、
端末プロセスグループ ID をプロセスグループの ID に設定することによって、
フォアグラウンドに配置できるようになります。
この機能は、同じ端末について競合する複数のジョブの間で
そのセッション内のどのプロセスグループでも、
フォアグラウンドに置くことができるようになります。
この機能は、同じ端末をめぐり競合している複数のジョブの間で
調停を行なうために用いられます (
.Xr csh 1
.Xr tty 4
を参照)。
.It "孤児になったプロセスグループ (Orphaned Process Group)"
.It "孤児プロセスグループ (Orphaned Process Group)"
プロセスグループは、ジョブ制御を行なうシェルの制御下にない場合、
孤児になったとみなされます。
もっと正確に言うと、
そのグループと同じセッションに属しているがプロセスグループは異なる、
というような親プロセスを、
プロセスグループのメンバのどれもが持たないような場合、
.Em 孤児になった
とみなされます。
より正確に言うと、
そのプロセスグループのメンバはどれも、
そのグループと同じセッションに属す親プロセスを持たず、かつ、
親プロセスが別のプロセスグループに属す場合、
そのプロセスグループは孤児になります。
なお、プロセスが終了するとき、その子プロセスの親プロセスは
.Xr init 8
@ -569,7 +604,7 @@ inode
孤児になったプロセスグループのメンバの全てが、必ずしも
孤児になったプロセス (プロセスを作成したプロセスが終了した)
というわけではありません。
セッションリーダのプロセスグループは定義によって孤児になります。
この定義により、セッションリーダのプロセスグループは孤児になります。
.It "実ユーザ ID と実グループID (Real User ID and Real Group ID) "
システム上の各ユーザは、実ユーザ ID と呼ばれる
正の整数によって識別されます。
@ -581,8 +616,8 @@ inode
呼ばれます。
.Pp
すべてのプロセスは実ユーザ ID と実グループ ID を持っています。
これらは、そのプロセスを作成したプロセス
同等の属性から初期化されます。
これらは、そのプロセスを作成したプロセスと等価な属性値を
使って初期化されます。
.It "実効ユーザ ID、実効グループ ID、グループアクセスリスト (Effective User Id, Effective Group Id, and Group Access List)"
システムリソースへのアクセスは、
実効ユーザ ID とグループアクセスリストという
@ -591,12 +626,12 @@ inode
としても知られています
(POSIX.1 では、グループアクセスリストは、補助グループ ID の
セットとして知られ、実効グループ ID がリストのメンバで
あるかどうかを指定しません)。
あるかどうかは未規定です)。
.Pp
実効ユーザ ID と実効グループ ID は、最初は
それぞれ、プロセスの実ユーザ ID と実グループ ID です。
いずれも (おそらくその先祖の 1 つによる) set-user-ID ファイルまたは
set-group-ID ファイルを実行を通じて変更することができます (
いずれも (おそらくその先祖のいずれかが) set-user-ID ファイルまたは
set-group-ID ファイルを実行することにより変更することができます (
.Xr execve 2
を参照してください)。
慣習で、実効グループ ID
@ -604,8 +639,8 @@ set-group-ID
set-group-ID プログラムの実行の結果、もともと持っていた
(実) グループ ID が失われることはありません。
.Pp
グループアクセスリストは、リソースへのアクセス可能性を決定する
ためにだけ使用されるグループ ID のセットです。
グループアクセスリストは、リソースへのアクセスが可能かどうかを決定する
ためにだけ使用されるグループ ID の集合です。
アクセスチェックは、以降の
``ファイルアクセスパーミッション''
で説明するように行われます。
@ -629,7 +664,6 @@ setuid
実効ユーザ ID が 0 の場合、そのプロセスは
.Em スーパーユーザ
プロセスとして認識され、特別な権利が認められます。
.ne 1i
.It "特殊プロセス (Special Processes)"
プロセス ID が 0, 1, 2 のプロセスは特殊です。
プロセス 0 はスケジューラです。
@ -653,7 +687,7 @@ setuid
.It "ファイル名 (File Name)"
最高 255
.Pq Dv MAXNAMELEN
文字で構成される名前であって、通常ファイル、特殊ファイル、
文字からなる名前であって、通常ファイル、特殊ファイル、
ディレクトリに名前を付けるのに使用されます。
.Pp
これらの文字は、0 (NUL) および
@ -662,38 +696,38 @@ setuid
.Tn ASCII
コードを除きすべての
.Tn ASCII
文字のセットから選択できます。
文字の集合から選択できます。
.Pp
なお、ファイル名の一部として
なお、一般に、ファイル名の一部として
.Ql \&* ,
.Ql \&? ,
.Ql \&[ ,
.Ql \&]
を使用するのは一般に賢明ではありません。シェルによって
を使用するのは賢明ではありません。シェルによって
これらの文字には特殊な意味がつけられるからです。
.It "パス名 (Path Name)"
パス名は、
.Tn NUL
で終端された文字列です。
オプショナルなスラッシュ
スラッシュ
.Ql \&/
で開始し、スラッシュで区切られたゼロ個以上のディレクトリ名が続き、
オプションでファイル名が続きます。パス名の長さの合計は 1024
(省略可能) で始まり、スラッシュで区切られたゼロ個以上のディレクトリ名が続き、
ファイル名 (省略可能) が続きます。パス名の長さの合計は 1024
.Pq Dv MAXPATHLEN
文字未満である必要があります。
.Pp
パス名がスラッシュで開始する場合、パス検索はルートディレクトリから
始まります。そうでない場合、検索は現在の作業ディレクトリから始まります。
スラッシュそれ自体はルートディレクトリを指定します。
パス名がスラッシュで始まる場合、パス検索はルートディレクトリから
開始します。そうでない場合、検索は現在の作業ディレクトリから開始します。
スラッシュだけの場合、ルートディレクトリを指定します。
空のパス名は現在のディレクトリを指します。
.It "ディレクトリ (Directory)"
ディレクトリは特殊なタイプのファイルであり、他のファイルを参照する
エントリが含まれています。ディレクトリエントリはリンクと呼ばれます。
慣習で、ディレクトリには少なくとも 2 つのリンク、
.Ql \&.
エントリを含んでいます。ディレクトリエントリをリンクと呼びます。
伝統的に、ディレクトリには少なくとも 2 つのリンク、
.Ql .\&
.Ql \&..
が含まれています。これらはそれぞれ
を含みます。これらはそれぞれ
.Em ドット
および
.Em ドット-ドット
@ -701,13 +735,13 @@ setuid
ドット-ドットはその親ディレクトリを指します。
.It "ルートディレクトリと現在の作業ディレクトリ (Root Directory and Current Working Directory)"
各プロセスは、ルートディレクトリと現在の作業ディレクトリという
概念に関連付けられています。これらはパス名検索を解決する際に
概念を持つとされてきました。これらの概念はパス名検索を解決する際に
用いられます。プロセスのルートディレクトリは、
ルートファイルシステムのルートディレクトリである必要はありません。
.It "ファイルアクセスパーミッション (File Access Permission)"
ファイルシステム内の各ファイルはアクセスパーミッションの
集合を持っています。これらのパーミッションは、プロセスがファイルに
ついて要求された操作 (たとえば、書き込み用にファイルを開く)
ついて要求された操作 (たとえば、書込み用にファイルをオープンする)
を行なってもよいかどうかを判定するのに使用されます。
アクセスパーミッションはファイルが作成されたときに設定されます。
アクセスパーミッションは
@ -715,24 +749,24 @@ setuid
呼び出しを用いて後から変更することもできます。
.Pp
ファイルアクセスでは、ファイルが
取りが許されているかどうか、書込みが許されているかどうか、
読取りが許されているかどうか、書込みが許されているかどうか、
実行が許されているかどうか、
によって分類されます。
ディレクトリファイルでは、
ディレクトリを検索してもよいかどうかを制御するのに
実行パーミッションを使用します。
.Pp
ファイルアクセスパーミッションは
それをユーザの 3 つの異なるクラス、
ファイルの所有者、ファイルのグループ内のユーザ、その他
に適用するものとしてシステムにより解釈されます。
システムがファイルアクセスパーミッションを解釈するにあたり
ユーザの 3 つの異なるクラス (ファイルの所有者
ファイルのグループ内のユーザ、その他) のどれに適用するかによって
解釈します。
各ファイルは、これらの各クラスについて、
独立したアクセスパーミッションのセットを持っています。
独立したアクセスパーミッションの集合を持っています。
アクセスチェックが行なわれると、システムは、
呼び出し側に適用できるアクセス情報をチェックすることによって、
パーミッションが認可されるかどうかを判定します。
.Pp
ファイルについての読取り、書込み、実行/検索の
ファイルについての読取り、書込み、実行/検索の
各パーミッションは、次の場合にプロセスに認可されます。
.Pp
プロセスの実効ユーザ ID がスーパーユーザである場合 (注:
@ -755,7 +789,6 @@ setuid
.Pp
上記のいずれにも該当しない場合、パーミッションは拒絶されます。
.It "ソケットとアドレスファミリ (Sockets and Address Families)"
.Pp
ソケットはプロセス間の通信の端点です。
各ソケットには、データ送信用および受信用の待ち行列があります。
.Pp
@ -776,7 +809,7 @@ setuid
あるプロトコルのグループに対応するアドレスの集合です。
ソケットはそれぞれ、ソケットが作成されたアドレス
ファミリから選択したアドレスを持ちます。
.El
.Sh 関連項目
.Xr intro 3 ,
.Xr perror 3
.\" Amended by N.Kumagai 2000-3-18

View file

@ -30,14 +30,18 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)madvise.2 8.1 (Berkeley) 6/9/93
.\" %FreeBSD: src/lib/libc/sys/madvise.2,v 1.14.2.1 1999/08/29 14:49:11 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/madvise.2,v 1.17.2.2 2000/12/12 09:55:46 ru Exp %
.\" WORD: revert 書き戻す(dirty なページをファイルシステムに書き込む)[madvise.2]
.\" WORD: physically backing store 物理的バッキングストア(仮想記憶の裏にあるディスク領域、swap やファイルシステム?!)
.\"
.Dd Jul 19, 1996
.Dd July 19, 1996
.Dt MADVISE 2
.Os
.Sh 名称
.Nm madvise
.Nd メモリの使用法について助言を与える
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/mman.h>
@ -47,8 +51,10 @@
.Fn madvise
システムコールによって、自身のメモリ利用の習性の知識があるプロセスは、それを
システムに説明できます。
これまで知られている習性は、
.Aq Pa sys/mman.h
で定義される既知の習性は次のとおりです。
で定義されており、次のとおりです。
.\" 6 から訳追加
.Bd -literal
#define MADV_NORMAL 0 /* これ以降、特殊な処理は必要ない */
#define MADV_RANDOM 1 /* ランダムなページ参照が予測される */
@ -56,6 +62,10 @@
#define MADV_WILLNEED 3 /* これらのページを必要とする */
#define MADV_DONTNEED 4 /* これらのページを必要としない */
#define MADV_FREE 5 /* データは今や重要ではない */
#define MADV_NOSYNC 6 /* 明示的に物理的バッキングストアがコミットされない場合 */
#define MADV_AUTOSYNC 7 /* デフォルトは物理的バッキングストアにコミットされる */
#define MADV_NOCORE 8 /* コアファイルにページを含まないこと */
#define MADV_CORE 9 /* コアファイルにページを復帰させる */
.Ed
.Pp
.Bl -tag -width MADV_SEQUENTIAL
@ -74,11 +84,12 @@
あるページはただちにプロセスにマップされ、それによって
プロセス全体にわたるフォルトによる読み込みによる
不要なオーバーヘッドを除去します。
これはフォルトによるページのバッキングストアからの読み込みを起こさず、
メモリ内に既にあるページを呼び出し側のプロセスに素早くマップします。
これは、フォルトによるページのバッキングストアからの読み込み
を生じさせるのではなく、
メモリ内に既にあるページを呼び出し側のプロセスに素早くマップさせます。
.It Dv MADV_DONTNEED
VM システムに、指定の範囲内のページのメモリ内優先順位の減少を許可します。
さらに、このアドレス範囲への将来の参照はページフォルトを発生させるでしょう。
今後、このアドレス範囲への参照はページフォルトを発生させるでしょう。
.It Dv MADV_FREE
VM システムにページを解放する自由を与え、指定ページ範囲内の情報がもはや
重要でないことをシステムに通知します。これは、アドレス空間を有効にしたままで
@ -90,6 +101,51 @@ VM
呼び出しの前にそこにあったデータが残っているかもしれません。
ページが再び修正されるまで、そのアドレス空間範囲に対する参照だけでは、
VM システムはバッキングストアから情報をページに読み込む動作を行わなくなります。
.\" 訳追加
.It Dv MADV_NOSYNC
このマップに関連づけられているデータを
物理的バッキングストアにフラッシュしないようにシステムに要求します。
通常、これにより、ファイルシステムアップデートデーモンが
VM システムが汚したページを特に理由もないのに
物理ディスクに書込む不要な動作を防止します。
VM とファイルシステムの一貫性は常に維持されることに注意して
下さい。
この機能は、
マップされたデータが必要なときだけ、
(通常、システムページャにより)フラッシュされることを
保証しているに過ぎません。
.Pp
この機能を使用する典型的な場合とは、
ファイルを裏に持つ共有メモリ領域をプロセス (IPC) 間通信で使いたいとき、
とくに、その領域に格納されるデータを物理的ディスクに書き込む必要が
ない場合です。
この機能は、
SysV 共有メモリ呼び出しで得られる mmap 性能と
同等の性能を与えてくれますし、かつ、
SysV 共有メモリ呼び出しを使うより、きめ細かい制御が可能で
より制約が少ない方法でもあります。
しかしこの機能は UNIX プラットホーム間で
移植性がないことに注意してください
(いくつかのプラットホームではデフォルトで
正しく振る舞うかも知れませんが)。
詳しい情報に関しては、
.Xr mmap 2
MAP_NOSYNC セクションを参照してください。
.It Dv MADV_AUTOSYNC
将来、アドレス範囲内のページが汚された場合のために
MADV_NOSYNC の効果を元に戻します。
既に汚されているページについての効果は不定です。
書き戻しするかもしれませんし、しないかもしれません。
書き戻しを確実に行なうには、
.Xr msync 2
または
.Xr fsync 2
システムコールを使用します。
.It Dv MADV_NOCORE
領域は、コアファイルに含まれません。
.It Dv MADV_CORE
コアファイルの領域を含みます。
.El
.Sh 戻り値
正常に完了すると
@ -112,7 +168,7 @@ VM
.Xr mincore 2 ,
.Xr mprotect 2 ,
.Xr msync 2 ,
.Xr munmap 2 .
.Xr munmap 2
.Sh 歴史
.Fn madvise
関数は

View file

@ -30,14 +30,16 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mincore.2 8.1 (Berkeley) 6/9/93
.\" %FreeBSD: src/lib/libc/sys/mincore.2,v 1.12.2.1 1999/08/29 14:49:11 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/mincore.2,v 1.13.2.2 2000/08/23 00:48:01 jhb Exp %
.\"
.Dd June 9, 1993
.Dt MINCORE 2
.Os
.Sh 名称
.Nm mincore
.Nd メモリの使用法について助言を得る
.Nd メモリの使用状況について報告を得る
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/mman.h>
@ -55,8 +57,8 @@
.Fn mincore
は値 0 を返し、
.Fa vec
はページの状態を反映するように更新
されます。そうでない場合は -1 が返され、エラーを示すために
はページの状態を反映するように更新されます。
そうでない場合は -1 を返し、エラーを示すために
.Va errno
が設定されます。
.Sh エラー

View file

@ -1,4 +1,4 @@
.\" %FreeBSD: src/lib/libc/sys/minherit.2,v 1.5.2.1 1999/08/29 14:49:12 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/minherit.2,v 1.7.2.2 2000/12/12 09:55:46 ru Exp %
.\"
.\" Copyright (c) 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@ -33,12 +33,14 @@
.\"
.\" @(#)minherit.2 8.1 (Berkeley) 6/9/93
.\"
.Dd Feb 17, 1996
.Dd February 17, 1996
.Dt MINHERIT 2
.Os
.Sh 名称
.Nm minherit
.Nd ページの継承を制御する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/mman.h>
@ -49,7 +51,7 @@
システムコールは、指定のページが継承の際の特性として
.Fa inherit
を持つように変更します。
すべての場合において、継承の際の特性がページ単位で設定できることが
すべての実装において、継承の際の特性がページ単位で設定できることが
保証されるているわけではありません。
変更の単位はリージョン全体かもしれません。
.Sh 戻り値
@ -68,14 +70,13 @@
引数と
.Fa len
引数によって指定される仮想アドレス範囲が有効ではありません。
.It Bq Er EACESS
.It Bq Er EACCES
.Fa inherit
引数によって指定されるフラグが、
.Fa addr
引数と
.Fa len
引数によって指定された
ページに対して適切ではありませんでした。
引数によって指定されたページに対して適切ではありませんでした。
.El
.Sh 関連項目
.Xr fork 2 ,

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mkdir.2 8.2 (Berkeley) 12/11/93
.\" %FreeBSD: src/lib/libc/sys/mkdir.2,v 1.7.2.2 1999/08/29 14:49:12 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/mkdir.2,v 1.9.2.2 2000/05/06 13:34:14 phantom Exp %
.\"
.Dd December 11, 1993
.Dt MKDIR 2
@ -38,6 +38,8 @@
.Sh 名称
.Nm mkdir
.Nd ディレクトリファイルを作成する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/stat.h>
@ -63,36 +65,36 @@
.Sh エラー
.Fn mkdir
は次の場合、処理に失敗してディレクトリは作成されません。
.Bl -tag -width ENAMETOOLO
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
.It Bq Er ENAMETOOLONG
パス名の構成要素が 255 文字を越えているか、
またはパス名全体が 1023 文字を越えています。
.It Bq Er ENOENT
前置パスの構成要素が存在しません。
パスの構成要素が存在しません。
.It Bq Er EACCES
前置パス名の構成要素について検索許可が拒否されています。
指定されたパスには、検索が許可されていないディレクトリが含まれています。
.It Bq Er ELOOP
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
.It Bq Er EROFS
指定されたファイルは読取り専用ファイルシステム上にあります。
.It Bq Er EEXIST
指定のファイルが存在します。
指定のファイルがすでに存在します。
.It Bq Er ENOSPC
新しいディレクトリが作成できません。そのディレクトリを作る空間が
ファイルシステムに残っていません。
新しいディレクトリが作成できません。
そのディレクトリを作る容量がファイルシステムに残っていません。
.It Bq Er ENOSPC
ディレクトリを作成するファイルシステム上に未使用の
inode がありません。
i ノードがありません。
.It Bq Er EDQUOT
新しいディレクトリが作成できません。ディレクトリを作るファイルシステム上の
ディスクブロックのユーザのクォータが枯渇しました。
.It Bq Er EDQUOT
ディレクトリを作成中のファイルシステム上のユーザの inode のクォータが
ディレクトリを作成中のファイルシステム上のユーザの i ノードのクォータが
枯渇しました。
.It Bq Er EIO
ディレクトリエントリの作成中、または inode を割当て中に入出力エラーが
ディレクトリエントリの作成中、あるいは i ノードを割り当て中に入出力エラーが
発生しました。
.It Bq Er EIO
ファイルシステムに読み書きしている間に入出力エラーが発生しました。

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mkfifo.2 8.1 (Berkeley) 6/4/93
.\" %FreeBSD: src/lib/libc/sys/mkfifo.2,v 1.7.2.2 1999/08/29 14:49:13 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/mkfifo.2,v 1.9.2.3 2000/12/08 13:49:31 ru Exp %
.\"
.Dd June 4, 1993
.Dt MKFIFO 2
@ -38,6 +38,8 @@
.Sh 名称
.Nm mkfifo
.Nd fifo ファイルを作成する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/stat.h>
@ -64,8 +66,8 @@ fifo
.Sh エラー
.Fn mkfifo
は、次の場合に処理を失敗し、fifo は作成されません。
.Bl -tag -width ENAMETOOLO
.It Bq Er ENOTSUPP
.Bl -tag -width Er
.It Bq Er ENOTSUP
カーネルが fifo をサポートするように構成されていません。
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
@ -73,33 +75,33 @@ fifo
パス名の構成要素が 255 文字を越えているか、
またはパス名全体が 1023 文字を越えています。
.It Bq Er ENOENT
前置パスの構成要素が存在しません。
パスの構成要素が存在しません。
.It Bq Er EACCES
前置パス名の構成要素について検索許可が拒否されています。
指定されたパスには、検索が許可されていないディレクトリが含まれています。
.It Bq Er ELOOP
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
.It Bq Er EROFS
指定されたファイルは読取り専用ファイルシステム上にあります。
.It Bq Er EEXIST
指定のファイルが存在します。
指定のファイルがすでに存在します。
.It Bq Er ENOSPC
新しい fifo 用のエントリを配置するディレクトリが拡張できません。
ディレクトリが入っているファイルシステム上に空間が残っていません。
ディレクトリが入っているファイルシステムに空き容量が残っていません。
.It Bq Er ENOSPC
fifo を作成するファイルシステム上に未使用の inode がありません。
fifo を作成するファイルシステム上に未使用の i ノードがありません。
.It Bq Er EDQUOT
新しい fifo 用のエントリを配置するディレクトリが拡張できません。
ディレクトリが入っているファイルシステム上のディスクブロックのユーザの
クォータが枯渇しました。
.It Bq Er EDQUOT
fifo を作成中のファイルシステム上のユーザの inode のクォータが
fifo を作成中のファイルシステム上のユーザの i ノードのクォータが
枯渇しました。
.It Bq Er EIO
ディレクトリエントリの作成中、または inode を割当て中に
ディレクトリエントリの作成中、あるいは i ノードを割り当て中に
.Tn I/O
(入出力) エラーが発生しました。
.It Bq Er EIO
ファイルシステムに読み書きしている間に入出力エラーが発生しました。
ファイルシステムに読み書きしている間に
.Tn I/O
(入出力) エラーが発生しました。
.It Bq Er EFAULT
@ -108,7 +110,7 @@ fifo
.El
.Sh 関連項目
.Xr chmod 2 ,
.Xr mknod 2 ,
.Xr mknod 2 ,
.Xr stat 2 ,
.Xr umask 2
.Sh 規格

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mknod.2 8.1 (Berkeley) 6/4/93
.\" %FreeBSD: src/lib/libc/sys/mknod.2,v 1.5.2.3 1999/08/29 14:49:14 peter Exp %
.\" $FreeBSD: src/lib/libc/sys/mknod.2,v 1.9.2.1 2000/04/22 17:06:59 phantom Exp
.\"
.Dd June 4, 1993
.Dt MKNOD 2
@ -38,6 +38,8 @@
.Sh 名称
.Nm mknod
.Nd 特殊なファイルノードを作成する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
@ -76,32 +78,32 @@
パス名の構成要素が 255 文字を越えているか、
またはパス名全体が 1023 文字を越えています。
.It Bq Er ENOENT
前置パスの構成要素が存在しません。
パスの構成要素が存在しません。
.It Bq Er EACCES
前置パス名の構成要素について検索許可が拒否されています。
指定されたパスには、検索が許可されていないディレクトリが含まれています。
.It Bq Er ELOOP
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
.It Bq Er EPERM
プロセスの実効ユーザ ID がスーパユーザではありません。
.It Bq Er EIO
ディレクトリエントリの作成中、または inode を割当て中に
ディレクトリエントリの作成中、あるいは i ノードを割り当て中に
入出力エラーが発生しました。
.It Bq Er ENOSPC
新しいノード用のエントリを配置するディレクトリが拡張できません。
ディレクトリが入っているファイルシステム上に空が残っていません。
ディレクトリが入っているファイルシステム上に空き容量が残っていません。
.It Bq Er ENOSPC
ノードを作成するファイルシステム上に未使用の inode がありません。
ノードを作成するファイルシステム上に未使用の i ノードがありません。
.It Bq Er EDQUOT
新しいノードのエントリを配置するディレクトリが拡張できません。
ディレクトリが入っているファイルシステム上のディスクブロックのユーザの
クォータが枯渇しました。
.It Bq Er EDQUOT
ノードを作成中のファイルシステム上の inode のユーザのクォータが
ノードを作成中のファイルシステム上の i ノードのユーザのクォータが
枯渇しました。
.It Bq Er EROFS
指定されたファイルは読取り専用ファイルシステム上にあります。
.It Bq Er EEXIST
指定のファイルが存在しています。
指定のファイルがすでに存在しています。
.It Bq Er EFAULT
.Fa path
は、プロセスに割り当てられたアドレス空間の範囲外を指しています。

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mlock.2 8.2 (Berkeley) 12/11/93
.\" %FreeBSD: src/lib/libc/sys/mlock.2,v 1.4.2.2 1999/08/29 14:49:15 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/mlock.2,v 1.6.2.2 2000/08/23 00:49:04 jhb Exp %
.\"
.Dd June 2, 1993
.Dt MLOCK 2
@ -39,6 +39,8 @@
.Nm mlock ,
.Nm munlock
.Nd 物理ページをメモリ内でロック (アンロック) する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/mman.h>
@ -67,12 +69,11 @@
.Pp
.Fn mlock
呼び出しの後、指示されたページは、アンロックされるまで
非常駐ページフォルもアドレス変換フォルトも起こしません。
非常駐ページフォルもアドレス変換フォルトも起こしません。
しかし、TLB の管理をソフトウェアで実装しているアーキテクチャでは、
保護違反フォルト
または TLB ミスフォルトを起こす可能性はあります。
ページに関するすべてのロックされたマッピングが削除
されるまで物理ページはメモリに留まります。複数のプロセスが、
保護違反フォルト、または TLB ミスフォルトを起こす可能性はあります。
ページに関するすべてのロックされたマッピングが削除されるまで
物理ページはメモリに留まります。複数のプロセスが、
それぞれの仮想アドレスマッピングから同じ物理ページをロックする
可能性があります。同様に、1 つのプロセスが
同じページに対する異なる複数の仮想マッピングによって、
@ -102,10 +103,10 @@
これらの呼び出しが利用できるのはスーパユーザだけです。
.Sh 戻り値
戻り値 0 は呼び出しが完了し、範囲内のすべてのページがロック、
またはアンロックされたことを示します。戻り値 -1 はエラーが起きて、
またはアンロックされたことを示します。戻り値 -1 はエラーが起きて、
そして範囲内のすべてのページのロックされた
ステータスが変更されないことを示します。この場合、エラーを示すために
グローバル位置
グローバル変数
.Va errno
が設定されます。
.Sh エラー
@ -120,8 +121,8 @@
指示された範囲のロックによって、ロックされたメモリについての
システム限界またはプロセスごとの限界を超過してしまいます。
.It Bq Er ENOMEM
指示されたアドレス範囲の一部が割当てられていません。
ページのフォルト/マッピングでエラーがありました。
指示されたアドレス範囲の一部が割当てられていません。
ページのフォルト / マッピングでエラーがありました。
.El
.Fn munlock
は次の場合に失敗します。
@ -131,7 +132,7 @@
.It Bq Er EINVAL
指定されたアドレスがページ境界に整列していないか、または長さが負です。
.It Bq Er ENOMEM
指示されたアドレス範囲の一部が割当てられていません。
指示されたアドレス範囲の一部が割当てられていません。
指示されたアドレス範囲の一部がロックされていません。
.El
.Sh 関連項目
@ -150,15 +151,15 @@ Sun
.Fn munlock
呼び出しが必要です。つまり
.Fn mlock
のネストです。これは実装上の結果
であって仕様ではないと考える必要があります。
のネストです。これは実装上の結果であって
仕様ではないと考える必要があります。
.Pp
プロセスごとのリソースの限界はロックされた仮想メモリの量への制限で、
システム全体に共通の制限はロックされた物理ページの数についてのものです。
このように、2 つの別々のマッピングから同じ物理ページを
ロックするとプロセスごとの制限に対しては 2 ページとしてカウントされ、
システム制限では 1 ページだけとしてカウントされます。
.Pp
プロセスごとのリソース制限は現時点ではサポートされていません。
.Sh 歴史
.Fn mlock

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mmap.2 8.4 (Berkeley) 5/11/95
.\" %FreeBSD: src/lib/libc/sys/mmap.2,v 1.22.2.5 2000/12/29 14:44:52 ru Exp %
.\"
.Dd May 11, 1995
.Dt MMAP 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm mmap
.Nd ファイルまたはデバイスをメモリにマップする
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/mman.h>
@ -57,8 +60,8 @@
.Fa len
がページサイズの倍数でない場合、
マップされた領域は指定の範囲を越えて拡張されるかもしれません。
このような拡張によってマップされたオブジェクトの末端を越えた
部分は 0 で埋められます。
このような拡張によってマップされたオブジェクトの末端を越えた部分は
0 で埋められます。
.Pp
.Fa addr
が 0 でない場合、これはシステムへのヒントとして使用されます
@ -142,8 +145,39 @@ MAP_STACK
このオプションは、スタックの
先頭を開始点とし下方に伸びる、サイズが最大で
.Fa len
バイトまで伸びるメモリ領域を作成します。スタックの
先頭は、呼び出しから返された開始アドレスに
バイトまで伸びるメモリ領域を作成します。
.It Dv MAP_NOSYNC
はこの VM マップを経由して汚されたデータを、無闇にではなく
(通常はページャによって) 必要な時のみ物理的なメディアに
フラッシュするようにします。
このオプションがないと、汚された VM ページは頻繁 (通常 30-60 秒毎) に
ディスクにフラッシュされるかも知れず、そのような動作を必要としない場合
(例えば IPC のためにファイルを用いた共有 mmap 領域を用いている場合)
パフォーマンスに問題が出ることがあります。
MAP_NOSYNC を使っているかにかかわらず、
VM/ ファイルシステムの一貫性は保たれることに注意してください。
このオプションは UNIX プラットフォーム間で (まだ) 移植性はありませんが、
いくつかのプラットフォームではデフォルトで同じ動作をするように
実装されているかも知れません。
.Pp
.Xr fsync2
関数はすべての汚染されたデータと、ファイルに関連づけられたメタデータを
フラッシュします。NOSYNC の汚れた VM データ物理的媒体にフラッシュします。
.Xr sync 8
コマンドと
.Xr sync2
システムコールは、汚染された NOSYNC VM のデータを通常フラッシュしません。
.Xr msync 2
システムコールは
.Bx
で整合性のあるファイルシステムのバッファキャッシュが実装されたので
廃止されました。しかしながら、汚れた VM ページとファイルシステムを
結びつけ、物理的媒体にすぐに(後程ではなく)フラッシュさせる用途に
使われることもあります。
.It Dv MAP_NOCORE
領域はコアファイルには含まれません。
.Pp
スタックの先頭は、呼び出しから返された開始アドレスに
.Fa len
バイトを加えたものになります。最も伸びた場合のスタックの下端は、
呼び出しによって返される開始アドレスになります。
@ -175,9 +209,10 @@ MAP_STACK
.Dv PROT_READ
.Fa prot
パラメータの一部として指定され、
パラメータの一部として指定されましたが
.Fa fd
が読取り用に開いていませんでした。フラグ
が読取り用に開かれていませんでした。
フラグ
.Dv MAP_SHARED
.Dv PROT_WRITE
@ -185,9 +220,9 @@ MAP_STACK
.Fa flags
.Fa prot
パラメータの一部として指定され、
パラメータの一部として指定されましたが
.Fa fd
は書込み用に開ていませんでした。
は書込み用に開かれていませんでした。
.It Bq Er EBADF
.Fa fd
が有効な開かれたファイルの記述子ではありません。
@ -212,12 +247,13 @@ MAP_STACK
が通常のファイルまたはキャラクタ型特殊ファイルを参照していませんでした。
.It Bq Er EINVAL
.Fa offset
がページ境界に整列していませんでした (後述する「バグ」を参照)。
がページ境界に整列していませんでした (後述する「バグの章」を参照)。
.It Bq Er ENOMEM
.Dv MAP_FIXED
が指定されて
.Fa addr
パラメータが与えられませんでした。
パラメータが与えられない、もしくは vm.nax_proc_mmap で指定された
プロセス毎の mmap に達しました。
.Dv MAP_ANON
が指定されて利用できるメモリが不充分でした。
.Sh 関連項目
@ -230,24 +266,25 @@ MAP_STACK
.Xr munmap 2 ,
.Xr getpagesize 3
.Sh バグ
.Ar len
は 2GB に限定されます。2GB をわずかに上回るマッピングは機能しませんが、2GB、
4GB、6GB、および 8GB よりわずかに少ないファイルサイズについて
.Fa len
は 2GB に限定されます。2GB をわずかに上回るマッピングは機能しませんが、
2GB, 4GB, 6GB, および 8GB よりわずかに少ないファイルサイズについて
(ファイルサイズ % 2GB) のサイズのウィンドウをマップできます。
.Pp
制約は多彩なな理由から生じています。そのほとんどは、極端に性能が低下するために
.Tn FreeBSD
の VM システム内で64 ビットのオフセットを使用したくないというものです。
制約は多彩な理由から生じています。
そのほとんどは、
.Fx
の VM システム内で 64 ビットのオフセットを使用したくないというものです。
したがって
.Tn FreeBSD
.Fx
は 32 ビットのページインデックスを使用しており、これによって
.Tn FreeBSD
.Fx
では最高で 8TB までのファイルサイズを利用できます。実際には
ファイルシステムコード内のバグによってさらに制約が課されて、
1TB までが利用できます。
(ブロック番号計算を行なっているときの桁落ち)。
.Pp
2GB 制限のもうつの理由は、ファイルシステムメタデータが負のオフセットに
2GB 制限のもうひとつの理由は、ファイルシステムメタデータが負のオフセットに
存在できるということです。
.Pp
現在われわれはページ境界に整列したファイルオフセットのみを処理できます。

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mount.2 8.3 (Berkeley) 5/24/95
.\" $FreeBSD: src/lib/libc/sys/mount.2,v 1.20.2.3 2000/12/08 13:49:32 ru Exp
.\"
.Dd May 24, 1995
.Dt MOUNT 2
@ -38,6 +39,8 @@
.Nm mount ,
.Nm unmount
.Nd ファイルシステムをマウントまたはマウント解除する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/mount.h>
@ -47,7 +50,7 @@
.Fn unmount "const char *dir" "int flags"
.Sh 解説
.Fn mount
関数は、ファイルシステムオブジェクトをシステムファイルツリーのポイント
関数は、ファイルシステムオブジェクトをシステムファイルツリーのマウントポイント
.Ar dir
に付けます。引数
.Ar data
@ -62,7 +65,7 @@
.Ar dir
を通して利用できるようになります。マウントが成功すると
.Ar dir
にあるどのファイルも覆い隠された状態になり、
にあるすべてのファイルが覆い隠された状態になり、
ファイルシステムがマウント解除されるまで利用できなくなります。
.Pp
次の
@ -74,7 +77,7 @@
ファイルシステムを読取り専用として取り扱います。
スーパユーザでさえこれに書込むことはできません。このオプションなしに
MNT_UPDATE を指定すると、
読取り専用ファイルシステムが読取り/書込みにアップグレードされます。
読取り専用ファイルシステムが読取り / 書込みにアップグレードされます。
.It Dv MNT_NOEXEC
そのファイルシステムからファイルを実行できないようにします。
.It Dv MNT_NOSUID
@ -102,17 +105,16 @@ SUID
.Pp
フラグ
.Dv MNT_UPDATE
は、マウントコマンドがにマウントされたファイルシステムに適用されて
いることを示します。これによって、ファイルシステムをマウント解除および
再マウントする必要なしに、マウントフラグを
は、マウントコマンドがすでにマウントされたファイルシステムに
適用されていることを示します。これによって、ファイルシステムを
マウント解除および再マウントする必要なしに、マウントフラグを
変更できます。ファイルシステムによっては、すべてのフラグの変更を
許容しない場合もあります。たとえば
多くのファイルシステムが、読み書き可から読取り専用への変更を
許容しません。
許容しない場合もあります。たとえば多くのファイルシステムが、
読み書き可から読取り専用への変更を許容しません。
.Pp
vfs サブシステムは、フラグ
.Dv MNT_RELOAD
によってにマウントされているファイルシステムに
によってすでにマウントされているファイルシステムに
関係するデータ構造体を更新します。
.Pp
.Fa type
@ -127,14 +129,14 @@ vfs
ついてのマニュアルページに記載されています。
慣習によりファイルシステムのマニュアルページは、
.Xr lsvfs 1
によって返されたファイルシステム名に ``mount_' 'の接頭辞を付けて
によって返されたファイルシステム名に ``mount_'' の接頭辞を付けて
命名されます。それゆえ、
.Nm NFS
ファイルシステムは
.Xr mount_nfs 8
マニュアルページに記述されています。
.Pp
.Fn umount
.Fn unmount
関数呼び出しは、ファイルシステムを指定のマウントポイント
.Fa dir
から対応付け解除します。
@ -165,7 +167,7 @@ vfs
.Va errno
が設定されます。
.Pp
.Fn umount
.Fn unmount
関数はマウント解除が正常に完了すると値 0 を返します。
そうでない場合は -1 が返され、エラーを示すために変数
.Va errno
@ -173,7 +175,7 @@ vfs
.Sh エラー
.Fn mount
関数は、次のうちの 1 つでも起きたときには処理を失敗します。
.Bl -tag -width [ENOTBLK]
.Bl -tag -width Er
.It Bq Er EPERM
呼び出し側がスーパユーザではありません。
.It Bq Er ENAMETOOLONG
@ -201,7 +203,7 @@ vfs
次のエラーは、
.Em ufs
ファイルシステムのマウントについて発生する可能性があります。
.Bl -tag -width [ENOTBLK]
.Bl -tag -width Er
.It Bq Er ENODEV
ufs_args の構成要素
.Ar fspec
@ -235,7 +237,7 @@ ufs_args
次のエラーは
.Em nfs
ファイルシステムマウントについて起きる可能性があります。
.Bl -tag -width [ENOTBLK]
.Bl -tag -width Er
.It Bq Er ETIMEDOUT
.Em nfs
がサーバと接触しようとして時間切れになりました。
@ -264,9 +266,9 @@ nfs_args
はプロセスに割り当てられたアドレス空間の範囲外を指しています。
.El
.Pp
.Fn umount
.Fn unmount
関数は、次のエラーの 1 つでも起きたときには処理を失敗します。
.Bl -tag -width [ENOTBLK]
.Bl -tag -width Er
.It Bq Er EPERM
呼び出し側がスーパユーザではありません。
.It Bq Er ENOTDIR
@ -303,7 +305,7 @@ nfs_args
.Sh 歴史
.Fn mount
関数と
.Fn umount
.Fn unmount
関数は
.At v6
で登場しました。

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mprotect.2 8.1 (Berkeley) 6/9/93
.\" %FreeBSD: src/lib/libc/sys/msync.2,v 1.16.2.2 2000/12/29 14:44:53 ru Exp %
.\"
.Dd June 9, 1993
.Dt MPROTECT 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm mprotect
.Nd ページの保護属性を制御する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/mman.h>

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)msync.2 8.2 (Berkeley) 6/21/94
.\" %FreeBSD: src/lib/libc/sys/msync.2,v 1.16.2.2 2000/12/29 14:44:53 ru Exp%
.\"
.Dd June 21, 1994
.Dt MSYNC 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm msync
.Nd マップされた領域を同期化する
.Sh 関数
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/mman.h>
@ -59,14 +62,14 @@
.Fa flags
引数は次のように指定できます。
.Bd -literal
MS_ASYNC ただちに戻ります (現時点では実装されていません)
MS_ASYNC ただちに戻ります
MS_SYNC 同期書込みを実行します
MS_INVALIDATE キャッシュされたデータをすべて無効にします
.Ed
.Sh 戻り値
エラーが起きた場合 -1 が返され、エラーを示すために
errno が設定されます。そうでない場合は
値として 0 が返されます。
errno が設定されます。
そうでないときは 0 が返されます。
.Sh エラー
.Fn msync
は次の場合に失敗します。
@ -83,6 +86,7 @@ errno
これらのフラグは同時に指定することはできません。
.It Bq Er EIO
ファイルシステムに書込む間に入出力エラーが発生しました。
.El.
.Sh 関連項目
.Xr madvise 2 ,
.Xr mincore 2 ,

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)munmap.2 8.3 (Berkeley) 5/27/94
.\" %FreeBSD: src/lib/libc/sys/munmap.2,v 1.10.2.2 2000/12/29 14:44:53 ru Exp %
.\"
.Dd May 27, 1994
.Dt MUNMAP 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm munmap
.Nd マッピングを除去する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/mman.h>
@ -44,7 +47,7 @@
.Fn munmap "void *addr" "size_t len"
.Sh 解説
.Fn munmap
システムコールは指定アドレス範囲についてマッピングを除去し
システムコールは指定アドレス範囲についてマッピングを除去します。
これにより、以降のこのアドレス範囲内への参照は
無効なメモリ参照を引き起こすようになります。
.Sh 戻り値
@ -63,8 +66,9 @@
パラメータがページ境界に整列していなかったか、
.Fa len
パラメータが負であったか、
またはアンマップする領域の一部がプロセスにとって有効な範囲の外側に
あります。
またはアンマップする領域の一部が
プロセスにとって有効な範囲外にあります。
.El
.Sh 関連項目
.Xr madvise 2 ,
.Xr mincore 2 ,

View file

@ -1,6 +1,7 @@
.\" %FreeBSD: src/lib/libc/sys/nanosleep.2,v 1.6.2.2 1999/09/18 16:19:00 phantom Exp %
.\" %FreeBSD: src/lib/libc/sys/nanosleep.2,v 1.8.2.1 2000/04/22 17:07:00 phantom Exp %
.\"
.\" $OpenBSD: nanosleep.2,v 1.1 1997/04/20 20:56:20 tholo Exp $
.\" %NetBSD: nanosleep.2,v 1.1 1997/04/17 18:12:02 jtc Exp %
.\" %NetBSD: nanosleep.2,v 1.1 1997/04/17 18:12:02 jtc Exp %
.\"
.\" Copyright (c) 1986, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@ -37,10 +38,12 @@
.\"
.Dd April 17, 1997
.Dt NANOSLEEP 2
.Os
.Os
.Sh 名称
.Nm nanosleep
.Nd ナノ秒単位の間隔でプロセス実行を中断する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <time.h>
.Ft int
@ -69,7 +72,7 @@ timespec
(要求時間から、実際に休眠状態にあった時間を減算したものです)。
.Pp
次の状態のうちのいずれかが発生した場合、
.Fn nanosleep
.Fn nanosleep
関数は -1 を返して
.Va errno
を対応する値に設定します。
@ -85,7 +88,7 @@ timespec
はシグナルの配信によって割り込まれました。
.It Bq Er EINVAL
.Fa rqtp
ゼロより小さいか、または 10 億以上のナノ秒値を指定しました。
0 未満か、10 億ナノ秒以上の値を指定しました。
.It Bq Er ENOSYS
.Fn nanosleep
はこのシステムではサポートされていません。

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)nfssvc.2 8.1 (Berkeley) 6/9/93
.\" %FreeBSD: src/lib/libc/sys/nfssvc.2,v 1.6.2.1 1999/08/29 14:49:16 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/nfssvc.2,v 1.8.2.3 2000/12/08 13:49:32 ru Exp %
.\"
.\" WORD: principal 主体名
.Dd June 9, 1993
@ -39,6 +39,8 @@
.Sh 名称
.Nm nfssvc
.Nd NFS nfssvc - NFS サービス
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <sys/mount.h>
@ -106,7 +108,10 @@ struct nfsd_cargs {
マウントポイントが Kerberos を使用している場合、
クライアント側がユーザ用の ``rcmd'' 認証チケットを要求するたびに、
.Xr mount_nfs 8
デーモンは、errno == ENEEDAUTH で
デーモンは、
.Va errno
==
.Er ENEEDAUTH
.Fn nfssvc
から戻ります。
.Xr mount_nfs 8
@ -140,16 +145,19 @@ ncd_authlen
デーモンとしてカーネルに入ります。
.Bd -literal
struct nfsd_srvargs {
struct nfsd *nsd_nfsd; /* カーネル内の nfsd struct を指すポインタ */
struct nfsd *nsd_nfsd; /*
* カーネル内の nfsd struct を
* 指すポインタ
*/
uid_t nsd_uid; /* cred にマップされる実効 uid*/
u_long nsd_haddr; /* クライアントの IP アドレス */
u_int32t nsd_haddr; /* クライアントの IP アドレス */
struct ucred nsd_cr; /* Cred. uid のマップ宛先 */
int nsd_authlen; /* 認証文字列の長さ (戻り) */
u_char *nsd_authstr; /* 認証文字列 (戻り) */
int nsd_verflen; /* および検証機能 */
u_char *nsd_verfstr;
struct timeval nsd_timestamp; /* 検証機能からのタイムスタンプ */
u_long nsd_ttl; /* 証書の持続時間 (秒) */
u_int32t nsd_ttl; /* 証書の持続時間 (秒) */
NFSKERBKEY_T nsd_key; /* セッションキー */
};
.Ed
@ -157,7 +165,10 @@ struct nfsd_srvargs {
.Xr nfsd 8
デーモンは、Kerberos 認証チケットを受信するたびに、
.Fn nfssvc
から errno == ENEEDAUTH で戻ります。
から
.Va errno
==
.Er ENEEDAUTH で戻ります。
.Xr nfsd 8
は、チケットを認証し、フィールド nsd_uid で指定された
``user id'' 用の一連の証書をサーバ上で生成しようとします。
@ -202,7 +213,7 @@ nsd_cr
.Bd -literal
struct nfsd_args {
int sock; /* サービスを行うソケット */
caddr_t name; /* 接続をベースとしたソケットのクライアントアドレス */
caddr_t name; /* 接続指向のソケットのクライアントアドレス */
int namelen;/* 名前の長さ */
};
.Ed
@ -215,7 +226,7 @@ struct nfsd_args {
.Va errno
が設定されます。
.Sh エラー
.Bl -tag -width [ENEEDAUTH]
.Bl -tag -width Er
.It Bq Er ENEEDAUTH
この特殊なエラー値は、実際には認証サポート用、
特に、前述した Kerberos 用に使用されます。
@ -240,7 +251,7 @@ struct nfsd_args {
なっています。
本来ならば、認証サポートが必要であることを示す値を返す必要があります。
なぜなら、
.Dv ENEEDAUTH
.Er ENEEDAUTH
は本来ならエラーではないからです。
引数である構造体のいくつかのフィールドは
正当なものであると仮定されており、直前の呼び出しから

View file

@ -37,6 +37,8 @@
.Sh 名称
.Nm open
.Nd 読取りまたは書込み用にファイルを開くかまたは作成する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <fcntl.h>
.Ft int
@ -208,6 +210,10 @@ O_EXLOCK
.It Bq Er ENXIO
指定のファイルはキャラクタ型特殊ファイルまたはブロック型特殊
ファイルであり、この特殊ファイルに対応するデバイスは存在していません。
.It Bq Er ENXIO
指定されたファイルは FIFO パイプで、どのプロセスからも
読取り用にオープンされていないにも関らず、
書込み用にオープンしようとしました。
.It Bq Er EINTR
.Fn open
操作がシグナルによって割り込みされました。
@ -217,6 +223,13 @@ O_EXLOCK
.Dv O_EXLOCK
が指定されましたが、下層となっているファイルシステムは
ロックをサポートしていません。
.It Bq Er EWOULDBLOCK
.Dv O_NONBLOCK
と、
.Dv O_SHLOCK
.Dv O_EXLOCK
のどちらかが指定されましたが、ファイルはロックされています。
.It Bq Er ENOSPC
.Dv O_CREAT
が指定されていて、ファイルが存在せず、新しいファイル用のエントリを

View file

@ -38,6 +38,8 @@
.Nm pathconf ,
.Nm fpathconf
.Nd 構成可能なパス名変数を取得する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft long
@ -69,7 +71,7 @@
.Pp
利用可能な値は次のとおりです。
.Pp
.Bl -tag -width "123456"
.Bl -tag -width 6n
.Pp
.It Li _PC_LINK_MAX
最大のファイルリンクカウント。
@ -119,9 +121,10 @@ KERN_NAME_MAX
.It Bq Er EINVAL
対応するファイルと変数名の対応付けは実装されていません。
.El
.Pp
.Fn pathconf
は次の場合に失敗します。
.Bl -tag -width ENAMETOOLONGAA
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
.It Bq Er ENAMETOOLONG
@ -137,7 +140,7 @@ KERN_NAME_MAX
ファイルシステムに読み書きしている間に入出力エラーが発生しました。
.El
.Pp
.Bl -tag -width [EFAULT]
.Bl -tag -width Er
.Fn fpathconf
は次の場合に失敗します。
.It Bq Er EBADF

View file

@ -38,6 +38,8 @@
.Sh 名称
.Nm pipe
.Nd プロセス間通信について記述子のペアを作成する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
@ -86,7 +88,7 @@
.Sh エラー
.Fn pipe
呼び出しは次の場合に失敗します。
.Bl -tag -width [EMFILE]
.Bl -tag -width Er
.It Bq Er EMFILE
アクティブな記述子が多すぎます。
.It Bq Er ENFILE

View file

@ -34,6 +34,8 @@
.Sh 名称
.Nm poll
.Nd 同期的な入出力の多重化
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <poll.h>
@ -64,7 +66,9 @@ struct pollfd {
構造体のフィールドは次のとおりです:
.Bl -tag -width XXXrevents
.It fd
ポールするファイル記述子。
ポールするファイル記述子。もし fd が -1 なら
.Fa revents
はクリアされ (0 に設定)、pollfd はチェックされません。
.It events
ポールするイベント (後述)。
.It revents

View file

@ -41,10 +41,12 @@
.Sh 名称
.Nm profil
.Nd プロセスのプロファイルを制御する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
.Fn profil "char *samples" "int size" "int offset" "int scale"
.Fn profil "char *samples" "size_t size" "vm_offset_t offset" "int scale"
.Sh 解説
.Fn profil
関数は、現在のプロセスのカウンタプロファイルを有効化または無効化します。

View file

@ -4,10 +4,12 @@
.\" This file is in the public domain.
.Dd January 20, 1996
.Dt PTRACE 2
.Os FreeBSD 2
.Os FreeBSD
.Sh 名称
.Nm ptrace
.Nd プロセスのトレースとデバッグ
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/ptrace.h>
@ -82,7 +84,7 @@ setuid
が命令空間から読み取り、
.Dv PT_READ_D
がデータ空間から読み取ります。現在の
.Tn FreeBSD
.Fx
システムでは、これらの 2 つの要求は完全に同一です。
.Fa addr
引数が、読み取りが行われる (トレースされたプロセスの仮想アドレス空間内の)
@ -152,6 +154,12 @@ int
.Fa data
は、実行を再開するときにトレースされるプロセスに配信されるシグナル番号、
またはシグナルが送信されない場合は 0 を提供します。
.It Dv PT_STEP
トレースされるプロセスは 1 命令ずつステップ実行されます。
.Fa addr
.Fa data
フィールドは使用されません。
.It Dv PT_KILL
トレースされるプロセスは、
.Dv PT_CONTINUE
@ -216,6 +224,24 @@ int
.Pf ( Aq Pa machine/reg.h
内に定義されています)
からトレースされたプロセスの浮動小数点レジスタをロードします。
.It Dv PT_GETDBREGS
この要求はトレースされるプロセスのデバッグレジスタを
.Fa addr
が指す
.Dq Li "struct dbreg"
.Pf ( Aq Pa machine/reg.h
内に定義されています)
に読みとります。
.It Dv PT_SETDBREGS
この要求は
.Dv PT_GETDBREGS
の反対です。
.Fa addr
の指す
.Dq Li "struct dbreg"
.Pf ( Aq Pa machine/reg.h
内に定義されています)
からトレースされたプロセスのデバッグレジスタにロードします。
.El
.Sh 戻り値
要求にはエラーでない値として
@ -229,7 +255,7 @@ int
.Sh エラー
.Fn ptrace
関数は次の場合に処理に失敗することがあります。
.Bl -tag -width 4n
.Bl -tag -width Er
.It Bq Er ESRCH
.Bl -bullet -compact
.It
@ -262,9 +288,11 @@ int
.It
.Dv PT_GETREGS ,
.Dv PT_SETREGS ,
.Dv PT_GETFPREGS
.Dv PT_GETFPREGS ,
.Dv PT_SETFPREGS ,
.Dv PT_GETDBREGS
または
.Dv PT_SETFPREGS
.Dv PT_SETDBREGS
が、有効なレジスタを設定せずに
プロセスについて試みられました
(これは通常、システムプロセスについてだけ真です)。
@ -295,11 +323,14 @@ int
.Dv PT_ATTACH
を使おうとしました。
.El
.El
.Sh 関連項目
.Xr execve 2 ,
.Xr sigaction 2 ,
.Xr wait 2 ,
.Xr execv 3
.Xr execv 3 ,
.Xr i386_clr_watch 3 ,
.Xr i386_set_watch 3
.Sh 歴史
.Fn ptrace
関数は

View file

@ -40,17 +40,19 @@
.\" WORD: quota file 割り当て制限を記録したファイル
.\" WORD: usage 使用状況
.\"
.Dd March 10, 1995
.Dd March 5, 1999
.Dt QUOTACTL 2
.Os
.Sh 名称
.Nm quotactl
.Nd ファイルシステム割り当て制限を操作する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <ufs/ufs/quota.h>
.Ft int
.Fn quotactl "const char *path" "int cmd" "int id" "char *addr"
.Fn quotactl "const char *path" "int cmd" "int id" "void *addr"
.Sh 解説
.Fn quotactl
システムコールは、
@ -162,7 +164,7 @@ QCMD
.Sh エラー
.Fn quotactl
呼び出しは次の場合に失敗します。
.Bl -tag -width ENAMETOOLONGAA
.Bl -tag -width Er
.It Bq Er EOPNOTSUPP
カーネルが
.Dv QUOTA

View file

@ -39,6 +39,8 @@
.Nm readv ,
.Nm pread
.Nd 入力を読取る
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/uio.h>
@ -129,15 +131,16 @@ struct iovec {
にアセンブルされ、
.Fn read
は読取り用に
.Va d
.Fa d
をロックしてから
.Fn _thread_sys_read
を呼び出す関数として実装されています。
.Fn _thread_sys_read
の呼び出しがブロックする場合は、コンテキストスイッチが実行されます。戻る前に
の呼び出しがブロックする場合は、コンテキストスイッチが実行されます。
戻る前に
.Fn read
.Va d
.Fa d
をアンロックします。
.Pp
非スレッドライブラリ
@ -153,7 +156,7 @@ struct iovec {
システムコールにアセンブルされ、
.Fn readv
は、読取り用に
.Va d
.Fa d
をロックしてから
.Fn _thread_sys_readv
を呼び出す関数として実装されています。
@ -162,7 +165,7 @@ struct iovec {
戻る前に
.Fn readv
.Va d
.Fa d
をアンロックします。
.Sh 戻り値
正常に完了すると、実際に読取られたバイト数が返されます。

View file

@ -38,6 +38,8 @@
.Sh 名称
.Nm readlink
.Nd シンボリックリンクの値を読取る
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
@ -65,7 +67,7 @@
.Sh エラー
.Fn readlink
は次の場合に失敗します。
.Bl -tag -width ENAMETOOLONG
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
.It Bq Er ENAMETOOLONG

View file

@ -38,6 +38,8 @@
.Sh 名称
.Nm reboot
.Nd システムをリブートするかまたはプロセッサを停止する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Fd #include <sys/reboot.h>

View file

@ -40,13 +40,15 @@
.Nm recvfrom ,
.Nm recvmsg
.Nd ソケットからメッセージを受信する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/socket.h>
.Ft ssize_t
.Fn recv "int s" "void *buf" "size_t len" "int flags"
.Ft ssize_t
.Fn recvfrom "int s" "void *buf" "size_t len" "int flags" "struct sockaddr *from" "int *fromlen"
.Fn recvfrom "int s" "void *buf" "size_t len" "int flags" "struct sockaddr *from" "socklen_t *fromlen"
.Ft ssize_t
.Fn recvmsg "int s" "struct msghdr *msg" "int flags"
.Sh 解説
@ -244,7 +246,7 @@ struct cmsgcred {
これらの呼出しは受信したバイト数を返し、エラーが起きた場合は -1 を返します。
.Sh エラー
呼び出しは次の場合に失敗します。
.Bl -tag -width ENOTCONNAA
.Bl -tag -width Er
.It Bq Er EBADF
引数
.Fa s

View file

@ -38,6 +38,8 @@
.Sh 名称
.Nm rename
.Nd ファイル名を変更する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <stdio.h>
.Ft int
@ -101,7 +103,7 @@
.Sh エラー
.Fn rename
は次の場合、処理に失敗し、いずれの引数ファイルも影響を受けません。
.Bl -tag -width ENAMETOOLONG
.Bl -tag -width Er
.It Bq Er ENAMETOOLONG
いずれかのパス名の構成要素が 255 文字を越えているか、またはいずれかの
パス名全体の長さが 1023 文字を越えています。
@ -171,7 +173,7 @@
.Fa to
の親ディレクトリであるか、
.Ql \&.
.Ql .\&
または
.Ql \&..
に名前を変更しようとしました。

View file

@ -40,6 +40,8 @@
.Sh 名称
.Nm revoke
.Nd ファイルアクセスを無効にする
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int

View file

@ -3,24 +3,28 @@
.\" describe the actual BSD implementation. Permission for
.\" use of this page comes from Rob Pike <rob@plan9.att.com>.
.\"
.Dd Jan 12, 1996
.\" %FreeBSD: src/lib/libc/sys/rfork.2,v 1.11.2.5 2000/12/12 09:55:46 ru Exp %
.\"
.Dd January 12, 1996
.Dt RFORK 2
.Os
.Sh 名称
.Nm rfork
.Nd プロセスリソースの操作
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
.Fn rfork "int flags"
.Sh 解説
fork, vfork, と rfork が新しいプロセスが作成される唯一の方法です。
fork, vfork, rfork は、新しいプロセスが作成される唯一の方法です。
.Fn rfork
への
への引数
.Fa flags
引数は、起動しているプロセス (親) のどのリソースが新しいプロセス (子) に
は、起動しているプロセス (親) のどのリソースが新しいプロセス (子) に
よって共有されるか、またはそれらのデフォルト値に初期化されるかを選択します。
リソースにはオープンファイル記述子テーブル (これは、共有されたとき
リソースにはオープンファイル記述子テーブル (これは、共有される場合
プロセスが他のプロセスについてファイルを開閉することを
許容します) およびオープンファイルが含まれます。
.Fa flags
@ -29,10 +33,10 @@ fork, vfork,
.It RFPROC
設定されている場合、新しいプロセスが
作成されます。そうでない場合、変更が現在のプロセスに影響を及ぼします。
現在のシステムでは、このフラグがいつでも設定されていることが要求されます。
現在の実装は、このフラグが必ず設定されていることを要求します。
.It RFNOWAIT
設定されている場合、子プロセスは親から分離されます。終了時に、子は、
が集めるステータスを残しません。
設定されている場合、子プロセスは親プロセスから分離されます。
終了時に、子プロセスは、親プロセスが集めるステータスを残しません。
.Xr wait 2
を参照してください。
.It RFFDG
@ -46,13 +50,23 @@ fork, vfork,
.Dv RFFDG
とは互いに排他的です。
.It RFMEM
設定されている場合、カーネルは、アドレス空間全体の共有を強制します。
その際、子は、親プロセスが所有しているすべての共有セグメントを継承します。
他のセグメントタイプは影響を受けません。親による後続の fork は、
子の間で共通データと bss を影響させます。
スタックセグメントは常に分割されます。
設定されている場合、
通常、ハードウェアのページテーブルを直接共有することで、
カーネルはアドレス空間全体の共有を強制します。
子は、この様な方法で、
親プロセスが所有しているすべてのセグメントを、
それが普段共有可能であるか否かに関係なく、
継承し共有します。
スタックセグメントは分割されない
(親と子の両方が同じスタック上に復帰する)
ので、
RFMEM フラグを指定した
.Fn rfork
を通常、高級言語から直接呼び出すことはできません。
例えば、C 言語でこのシステムコールを直接呼び出すことはできません。
共に設定可能なフラグは
.Dv RFPROC
とだけ共に設定することになるでしょう。
だけです
.It RFSIGSHARE
設定されている場合、カーネルは、親子間で sigacts 構造体を共有することを
強制します。
@ -82,8 +96,8 @@ SIGUSR1
.Fn fork
は、
.Fn rfork "RFFDG | RFPROC"
への呼び出しとして実現できますが、後方互換性のためにでは
ありません。
への呼び出しとして実装可能ですが、後方互換性のために
その様には実装していません。
.Sh 戻り値
正常に完了した場合、
.Fn rfork
@ -96,7 +110,7 @@ SIGUSR1
.Sh エラー
.Fn rfork
は、次の場合に処理を失敗し、子プロセスは作成されません。
.Bl -tag -width [EAGAIN]
.Bl -tag -width Er
.It Bq Er EAGAIN
実行中のプロセスの合計数がシステムの課す制限を超過してしまいます。
制限は
@ -116,7 +130,7 @@ MIB
.It Bq Er EAGAIN
ユーザがスーパユーザではなく、リソースパラメータ
.Dv RLIMIT_NOFILE
に対応するソフトリソースの限を超過してしまいます
に対応するソフトリソースの限を超過してしまいます
.Pf ( Xr getrlimit 2
を参照)。
.It Bq Er EINVAL
@ -131,6 +145,19 @@ RFFDG
.Xr intro 2 ,
.Xr minherit 2 ,
.Xr vfork 2
.Sh BUGS
.Fx
は native な
.Fn clone
ライブラリコールを未だ実装していませんし、
現在の pthreads 実装は RFMEM を指定した
.Fn rfork
を利用していません。
linux スレッドライブラリの native port である、
.Pa /usr/ports/devel/linuxthreads
は RFMEM を利用して動作する
.Fn clone
コールを含んでいます。
.Sh 歴史
.Fn rfork
関数は

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)rmdir.2 8.1 (Berkeley) 6/4/93
.\" %FreeBSD: src/lib/libc/sys/rmdir.2,v 1.5.2.3 2000/12/29 14:44:53 ru Exp %
.\"
.Dd June 4, 1993
.Dt RMDIR 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm rmdir
.Nd ディレクトリファイルを削除する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
@ -47,7 +50,7 @@
.Fa path
で指定されるディレクトリファイルを削除します。
ディレクトリには
.Ql \&.
.Ql .\&
.Ql \&..
以外のエントリがあってはなりません。
@ -58,7 +61,7 @@
にエラーコードが保存されます。
.Sh エラー
次の場合を除いて、指定のファイルが削除されます。
.Bl -tag -width [ENAMETOOLONG]
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
.It Bq Er ENAMETOOLONG
@ -70,9 +73,9 @@
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
.It Bq Er ENOTEMPTY
指定されたディレクトリには
.Ql \&.
.Ql .\&
.Ql \&..
.Ql ..\&
以外のファイルが含まれています。
.It Bq Er EACCES
前置パス名の構成要素について検索許可が拒否されています。

View file

@ -27,13 +27,16 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc/sys/rtprio.2,v 1.10.2.2 1999/09/18 16:19:00 phantom Exp %
.\" %FreeBSD: src/lib/libc/sys/rtprio.2,v 1.13.2.5 2000/12/29 14:44:53 ru Exp %
.\"
.Dd July 23, 1994
.Dt RTPRIO 2
.Os FreeBSD
.Sh 名称
.Nm rtprio
.Nd ユーティリティやプロセスのリアルタイムまたはアイドル優先順位を取得と修正
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/rtprio.h>
@ -48,7 +51,7 @@
で実行する操作を指定します。現在の優先順位を取得するには
RTP_LOOKUP、優先順位を設定するには RTP_SET です。
.Fa pid
は、対象のプロセスを指定します。現在のプロセスについては 0 です。
は、対象のプロセスを指定します。現在のプロセスを指定するには 0 を使います。
.Pp
.Fa *rtp
は、優先順位と優先順位のタイプを指定するのに使用する struct rtprio を指す
@ -67,19 +70,19 @@ struct rtprio {
.Nm prio
によって指定する優先順位は、0 から
.Dv RTP_PRIO_MAX (通常は 31)
の範囲になります。0 が可能な最高優先順位です。
の範囲になります。0 が指定可能な最高優先順位です。
.Pp
リアルタイム優先順位とアイドル優先順位は、
fork() と exec() を通じて継承されます。
.Pp
リアルプロセスは、それ以上優先順位をもつプロセス、
リアルタイムプロセスは、それ以上優先順位をもつプロセス、
または割り込みによってだけ優先権を取得できます。
アイドル優先順位のプロセスは、
他のリアルタイムまたは通常の優先順位プロセスが
実行可能でないときにだけ実行されます。
優先の高いリアルまたはアイドルのプロセスは
優先の低いリアルまたはアイドルのプロセスから優先権を取得します。
優先が等しいリアルまたはアイドルの
優先順位の高いリアルまたはアイドルのプロセスは
優先順位の低いリアルまたはアイドルのプロセスから優先権を取得します。
優先順位が等しいリアルまたはアイドルの
プロセスはラウンドロビン式で実行されます。
.Sh 戻り値
.Fn rtprio
@ -97,11 +100,13 @@ fork()
が範囲外でした。
.It Bq Er EPERM
呼び出しプロセスがリアルタイム優先順位を設定できません。
スーパユーザだけがプロセスのリアル優先順位を変更することができます。
スーパユーザ以外は現在のプロセスのアイドル優先順位を変更できるだけです。
スーパユーザだけが任意のプロセスのリアル優先順位を変更することができます。
スーパユーザは現在のプロセスのアイドル優先順位を変更できるだけです。
.It Bq Er ESRCH
指定のプロセスが見つかりませんでした。
.El
.Sh 作者
.An -nosplit
元の作者は
.An Henrik Vestergaard Draboel Aq hvd@terry.ping.dk
です。

View file

@ -1,4 +1,4 @@
.\" %FreeBSD: src/lib/libc/sys/sched_get_priority_max.2,v 1.2.2.1 1999/08/29 14:49:19 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/sched_get_priority_max.2,v 1.3.2.5 2000/12/12 09:55:46 ru Exp %
.\" Copyright (c) 1998 HD Associates, Inc.
.\" All rights reserved.
.\"
@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd Mar 12, 1998
.Dd March 12, 1998
.Dt SCHED_GET_PRIORITY_MAX 2
.Os BSD 4
.Sh 名称
@ -31,6 +31,8 @@
.Nm sched_get_priority_min ,
.Nm sched_rr_get_interval
.Nd スケジュールパラメータ制限を取得する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sched.h>
.Ft int
@ -43,7 +45,10 @@
.Fn sched_get_priority_max
関数と
.Fn sched_get_priority_min
関数は、指定された方針についてそれぞれ該当する最大と最小を返します。
関数は、
.Fa policy
で指定されたスケジューリング方針について、
それぞれ該当する最大と最小を返します。
.Fn sched_rr_get_interval
関数は、
.Fa interval
@ -51,10 +56,10 @@
.Fa timespec
構造体を、
.Fa pid
によって指定されるプロセスについて
指定されるプロセスについて
現在の実行時間制限 (すなわち、時間量) が含まれるように更新します。
.Fa pid
ゼロの場合、呼び出しプロセスに関する現在の実行時間制限が返されます。
0 の場合、呼び出し元プロセスに関する現在の実行時間制限が返されます。
.Pp
.Fa policy
の値は
@ -66,30 +71,30 @@
.It Bq Er SCHED_OTHER
標準のタイムシェアリングスケジューラ。
.It Bq Er SCHED_RR
同じ優先順位でのラウンドロビンスケジューリング。
同じ優先順位のプロセス間でのラウンドロビンスケジューリング。
.El
.Sh 戻り値
正常に完了すると、
.Fn sched_get_priority_max
関数と
.Fn sched_get_priority_min
関数はそれぞれ該当する最大値または最小値を返します。
正常に完了しない場合、戻り値 -1 が返され
エラーを示すよう
関数はそれぞれ該当する最大値または最小値を返します。
正常に完了しない場合、どちらの関数も -1 を返し
エラーを示す
.Fa errno
が設定されます。
を設定します。
.Pp
正常に完了した場合、
.Fn sched_rr_get_interval
関数は 0 を返します。そうでない場合、
値 -1 が返され、エラーを示すために
値 -1 を返し、エラーを示すために
.Fa errno
が設定されます。
を設定します。
.Sh エラー
処理を失敗すると、
.Va errno
は対応する値に設定されます。
.Bl -tag -width [EFAULT]
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa policy
パラメータの値が定義されているスケジュール方針ではありません。
@ -100,10 +105,10 @@
関数、
および
.Fn sched_rr_get_interval
関数は、このシステムでサポートされていません。
関数は、この実装ではサポートされていません。
.It Bq Er ESRCH
.Fa pid
によって指定されるプロセスに対応するプロセスが見つかりません。
指定されるプロセスに対応するプロセスが見つかりません。
.El
.Sh 関連項目
.Xr sched_get_scheduler 2 ,

View file

@ -1,4 +1,4 @@
.\" %FreeBSD: src/lib/libc/sys/sched_setparam.2,v 1.3.2.1 1999/08/29 14:49:20 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/sched_setparam.2,v 1.4.2.4 2000/12/12 09:55:46 ru Exp %
.\" Copyright (c) 1998 HD Associates, Inc.
.\" All rights reserved.
.\"
@ -23,13 +23,15 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd Mar 12, 1998
.Dd March 12, 1998
.Dt SCHED_SETPARAM 2
.Os BSD 4
.Sh 名称
.Nm sched_setparam ,
.Nm sched_getparam
.Nd スケジュールパラメータの設定/取得
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sched.h>
.Ft int
@ -52,7 +54,7 @@
メンバの値は、
.Fa pid
で指定するプロセスの現在のスケジュール方針用の
優先範囲内 (両端含む) の整数である必要があります。
優先順位範囲内 (両端含む) の整数である必要があります。
優先順位の数値が高いほど優先順位が高いことを表します。
.Pp
この実装では、
@ -76,7 +78,7 @@
に指定されているものです。
.Pp
ターゲットプロセスは、実行中にせよ実行中でないにせよ、
優先順位が等しいかまたはより高い
優先順位が等しいかまたはより高い
他のすべての実行可能なプロセスが実行されるようにスケジュールされた後で、
実行を再開します。
.Pp
@ -143,7 +145,7 @@ SCHED_RR
処理に失敗すると、
.Va errno
を対応する値に設定します。
.Bl -tag -width [EFAULT]
.Bl -tag -width Er
.It Bq Er ENOSYS
システムはこの機能をサポートするように構成されていません。
.It Bq Er EPERM

View file

@ -1,4 +1,4 @@
.\" %FreeBSD: src/lib/libc/sys/sched_setscheduler.2,v 1.2.2.1 1999/08/29 14:49:21 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/sched_setscheduler.2,v 1.3.2.5 2000/12/12 09:55:46 ru Exp %
.\" Copyright (c) 1998 HD Associates, Inc.
.\" All rights reserved.
.\"
@ -23,13 +23,15 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd Mar 12, 1998
.Dd March 12, 1998
.Dt SCHED_SETSCHEDULER 2
.Os BSD 4
.Sh 名称
.Nm sched_setscheduler ,
.Nm sched_getscheduler
.Nd スケジュール方針とスケジューラパラメータの設定/取得
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sched.h>
.Ft int
@ -93,7 +95,7 @@
構造体は
.Fa <sched.h>
に定義されています。
.Pp
.Bd -literal -offset indent
struct sched_param {
int sched_priority; /* スケジュール優先順位 */
@ -133,7 +135,7 @@ struct sched_param {
処理に失敗すると、
.Va errno
を対応する値に設定します。
.Bl -tag -width [EFAULT]
.Bl -tag -width Er
.It Bq Er ENOSYS
システムは、この機能をサポートするように構成されていません。
.It Bq Er EPERM
@ -148,8 +150,8 @@ struct sched_param {
パラメータの値が無効であるか、または
.Fa param
に含まれている
1 つまたは複数のパラメータが
指定スケジュール方針で有効な範囲の外にあります。
1 つまたは複数のパラメータが
指定されたスケジュール方針で有効な範囲の外にあります。
.El
.Sh 関連項目
.Xr sched_get_priority_max 2 ,

View file

@ -1,4 +1,4 @@
.\" %FreeBSD: src/lib/libc/sys/sched_yield.2,v 1.1.2.1 1999/08/29 14:49:21 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/sched_yield.2,v 1.2.2.5 2000/12/29 14:44:53 ru Exp %
.\" Copyright (c) 1998 HD Associates, Inc.
.\" All rights reserved.
.\"
@ -23,12 +23,14 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd Mar 12, 1998
.Dd March 12, 1998
.Dt SCHED_YIELD 2
.Os BSD 4
.Sh 名称
.Nm sched_yield
.Nd プロセッサを明け渡す
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sched.h>
.Ft int
@ -48,9 +50,10 @@
処理に失敗すると、
.Va errno
に対応する値を設定します。
.Bl -tag -width [EFAULT]
.Bl -tag -width Er
.It Bq Er ENOSYS
システムがこの機能をサポートするように構成されていません。
.El
.Sh 規格
.Fn sched_yield
関数は

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)select.2 8.2 (Berkeley) 3/25/94
.\" %FreeBSD: src/lib/libc/sys/select.2,v 1.14.2.1 2000/04/22 17:07:04 phantom Exp %
.\"
.Dd March 25, 1994
.Dt SELECT 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm select
.Nd 同期的な入出力の多重化
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/time.h>
@ -57,7 +60,7 @@
でアドレスを渡された入出力記述子集合を調べ、
それらの記述子のいくつかがそれぞれ、読取り準備完了であるか、
書込み準備完了であるか、または保留されている例外条件があるかを調べます。
検出できる唯一の例外条件はソケット上に受信した帯外のデータです。
検出可能な唯一の例外条件は、ソケット上に受信した帯外のデータです。
最初の
.Fa nfds
個の記述子が各集合内でチェックされます。すなわち、記述子集合中の 
@ -102,14 +105,18 @@
.Pp
.Fa timeout
が、非 nil
のポインタである場合、それはセレクションが完了するのを
待機する最大インターバルを指定します。
のポインタである場合、それはセレクションの完了を
待つ最大インターバルを指定します。
システムの活動性が、このインターバルを不定時間延長する
ことがあります。
.Pp
.Fa timeout
nil
ポインタの場合、
.Fn select
は無限にブロックします。
.Pp
ポーリングのためには、
.Fa timeout
引数が非

View file

@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc/sys/semctl.2,v 1.8.2.1 1999/08/29 14:49:21 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/semctl.2,v 1.9.2.2 2000/12/29 14:44:53 ru Exp %
.\"
.Dd September 12, 1995
.Dt SEMCTL 2
@ -31,6 +31,8 @@
.Sh 名称
.Nm semctl
.Nd セマフォ集合に対する操作を制御する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/ipc.h>
@ -40,10 +42,10 @@
.Sh 解説
.Fn semctl
は、
.Fa semid
で示されるセマフォ集合に対して
.Fa cmd
が示す操作を実行します。
が示す操作を
.Fa semid
で示されるセマフォ集合に対して実行します。
ある値の
.Fa cmd
に対しては、4 番目の引数
@ -75,7 +77,7 @@ union semun {
.Fa "struct semid_ds"
を取得し、
.Fa arg.buf
が指すメモリに保存します。
が指すメモリに保存します。
.It Dv IPC_SET
セマフォ集合の
.Fa "struct semid_ds"
@ -95,7 +97,7 @@ union semun {
またはスーパユーザ特権を持っている必要があります。
.It IPC_RMID
セマフォ集合をただちにシステムから削除します。
呼び出し元プロセスの実効ユーザ ID セマフォ集合の
呼び出し元プロセスの実効ユーザ ID セマフォ集合の
.Fa sem_perm.uid
または
.Fa sem_perm.cuid
@ -122,8 +124,7 @@ union semun {
.It Dv GETZCNT
セマフォ番号
.Fa semnum
の値が
0 になるのを待機しているプロセスの数を返します。
の値が 0 になるのを待っているプロセスの数を返します。
.It Dv GETALL
集合内のすべてのセマフォの値を
.Fa arg.array
@ -180,6 +181,7 @@ struct semid_ds {
.It Bq Er EACCES
操作とセマフォ集合のモードの間に不一致があったために
パーミッションが拒否されました。
.El
.Sh 関連項目
.Xr semget 2 ,
.Xr semop 2

View file

@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc/sys/semget.2,v 1.6.2.1 1999/08/29 14:49:22 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/semget.2,v 1.7.2.2 2000/12/29 14:44:53 ru Exp %
.\"
.Dd September 12, 1995
.Dt SEMGET 2
@ -31,6 +31,8 @@
.Sh 名称
.Nm semget
.Nd セマフォ ID を取得する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/ipc.h>
@ -134,8 +136,8 @@ IPC_EXCL
.Fa key
に対応するセマフォ集合が既に存在します。
.It Bq Er EINVAL
システムが課している集合単位の最大値を、要求されたセマフォの数が
超過しています。
要求されたセマフォの数が
システムが集合単位で課している最大値を超過しています。
.It Bq Er ENOSPC
利用可能なセマフォが不足しています。
.It Bq Er ENOSPC
@ -147,6 +149,7 @@ IPC_EXCL
に対応するセマフォ集合が見つからず、その際に
IPC_CREAT
が指定されていませんでした。
.El
.Sh 関連項目
.Xr semctl 2 ,
.Xr semop 2 ,

View file

@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc/sys/semop.2,v 1.6.2.1 1999/08/29 14:49:22 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/semop.2,v 1.7.2.3 2000/12/29 14:44:53 ru Exp %
.\"
.\" WORD: atomic 不可分な [POSIX]
.\" WORD: adjust on exit 終了時調整
@ -33,6 +33,8 @@
.Sh 名称
.Nm semop
.Nd セマフォ集合に対する不可分な操作の配列
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/ipc.h>
@ -130,7 +132,7 @@ IPC_NOWAIT
を指定した場合、
.Fn semop
は戻り値
EAGAIN
.Er EAGAIN
でただちに復帰します。
.It
.Fn semctl
@ -139,7 +141,7 @@ IPC_RMID
オプションを用いて、他のプロセスがセマフォを削除してしまった場合、
.Fn semop
は戻り値
EINVAL
.Er EINVAL
でただちに復帰します。
.It
それ以外の場合、セマフォの値が
@ -208,6 +210,7 @@ IPC_NOWAIT
.\"
.Fa sem_num
が集合に対する有効なセマフォの範囲内にありませんでした。
.El
.Sh 関連項目
.Xr semctl 2 ,
.Xr semget 2

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)send.2 8.2 (Berkeley) 2/21/94
.\" %FreeBSD: src/lib/libc/sys/send.2,v 1.8.2.1 1999/08/29 14:49:23 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/send.2,v 1.10.2.1 2000/04/22 17:07:05 phantom Exp %
.\"
.Dd February 15, 1995
.Dt SEND 2
@ -40,13 +40,15 @@
.Nm sendto ,
.Nm sendmsg
.Nd ソケットからメッセージを送信する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/socket.h>
.Ft ssize_t
.Fn send "int s" "const void *msg" "size_t len" "int flags"
.Ft ssize_t
.Fn sendto "int s" "const void *msg" "size_t len" "int flags" "const struct sockaddr *to" "int tolen"
.Fn sendto "int s" "const void *msg" "size_t len" "int flags" "const struct sockaddr *to" "socklen_t tolen"
.Ft ssize_t
.Fn sendmsg "int s" "const struct msghdr *msg" "int flags"
.Sh 解説
@ -94,7 +96,7 @@
.Bd -literal
#define MSG_OOB 0x1 /* 帯域外データを処理する */
#define MSG_PEEK 0x2 /* 着信メッセージを覗く */
#define MSG_DONTROUTE 0x4 /* ルーティングをバイパス、インタフェースを直接使用する */
#define MSG_DONTROUTE 0x4 /* ルーティングをバイパス、インタフェースを直接使用する */
#define MSG_EOR 0x8 /* このデータでレコードを終了する */
#define MSG_EOF 0x100 /* このデータでトランザクションを終了する */
.Ed
@ -197,6 +199,6 @@
.Xr write 2
.Sh 歴史
.Fn send
関数呼出しは
関数呼出しは
.Bx 4.2
で登場しました。

View file

@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc/sys/sendfile.2,v 1.2.2.3 1999/08/29 14:49:24 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/sendfile.2,v 1.6.2.3 2000/12/08 13:49:32 ru Exp %
.\"
.Dd November 5, 1998
.Dt SENDFILE 2
@ -31,6 +31,8 @@
.Sh 名称
.Nm sendfile
.Nd ファイルをソケットに送信
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/socket.h>
@ -49,7 +51,7 @@
引数はファイルのどこから開始すべきかを指定します。
.Fa nbytes
引数は、ファイルの何バイトを送信する必要があるかを指定します。 0 は、
ファイル終了に到達するまで送信という特殊な意味を持ちます。
ファイルの終わりに到達するまで送信という特殊な意味を持ちます。
.Pp
オプションのヘッダまたはトレーラ、またはその両方は、構造体 sf_hdtr を
指すポインタを指定することによってファイルの前と後で送信できます。
@ -70,7 +72,8 @@ struct sf_hdtr {
ポインタは、 NULL でない場合に構造体 iovec 構造の配列を
指します。 iovec 構造体の詳細については、
.Fn writev
システムコールを参照してください。これらの配列内の iovecs の数は、
システムコールを参照してください。
これらの配列内の iovecs の数は、
.Fa hdr_cnt
.Fa trl_cnt
@ -85,17 +88,47 @@ NULL
.Pp
非ブロッキング入出力用に指定されたソケットを使用するときに、
.Fn sendfile
は要求されたよりも少ないバイトを送信することがあります。この場合、正常に
書込まれたバイト数が
は要求されたよりも少ないバイトを送信することがあります。
この場合、正常に書込まれたバイト数が
.Fa *sbytes
(指定されている場合) に返され、エラー
.Er EAGAIN
が返されます。
.Sh 実装上の注釈
.Pp
.Fn sendfile
の FreeBSD での実装は「0 コピー」です。すなわち、ファイルデータのコピー
.Fx
での実装は「0 コピー」です。すなわち、ファイルデータのコピー
が回避されるように最適化されています。
.Pp
非スレッドライブラリでは、
.Fn sendfile
.Va sendfile
システムコールとして実装されています。
.Pp
スレッドライブラリでは、
.Va sendfile
システムコールは
.Fn _thread_sys_sendfile
にアセンブルされ、
.Fn sendfile
は読取り用に
.Fa fd
、書込み用に
.Fa s
をロックしてから
.Fn _thread_sys_sendfile
を呼び出す関数として実装されています。
.Fn _thread_sys_sendfile
の呼び出しがブロックする場合は、コンテキストスイッチが実行されます。
戻る前に、
.Fn sendfile
.Fa fd
.Fa s
をアンロックします。
.Sh 戻り値
正常に完了すると、
.Fn sendfile

View file

@ -30,13 +30,16 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)setgroups.2 8.2 (Berkeley) 4/16/94
.\" %FreeBSD: src/lib/libc/sys/setgroups.2,v 1.4.2.1 2000/04/22 17:07:05 phantom Exp %
.\"
.Dd April 16, 1994
.Dt SETGROUPS 2
.Os BSD 4.2
.Sh 名称
.Nm setgroups
.Nd グループ アクセス リストを設定する
.Nd グループアクセスリストを設定する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/param.h>
.Fd #include <unistd.h>
@ -66,7 +69,7 @@
呼び出しは次の場合に処理に失敗します。
.Bl -tag -width Er
.It Bq Er EPERM
呼び出し側がスーパユーザではありません
スーパユーザ以外のユーザによって呼び出されました
.It Bq Er EFAULT
.Fa gidset
に指定されたアドレスは、

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)setpgid.2 8.1 (Berkeley) 6/4/93
.\" %FreeBSD: src/lib/libc/sys/setpgid.2,v 1.5.2.3 2000/08/23 00:45:19 jhb Exp %
.\"
.Dd June 4, 1993
.Dt SETPGID 2
@ -37,7 +38,9 @@
.Sh 名称
.Nm setpgid ,
.Nm setpgrp
.Nd プロセス グループを設定する
.Nd プロセスグループを設定する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
@ -46,16 +49,16 @@
.Fn setpgrp "pid_t pid" "pid_t pgrp"
.Sh 解説
.Fn setpgid
は、指定された
.Ar pid
プロセスのプロセスグループを指定された
は、指定されたプロセス
.Fa pid
のプロセスグループを指定された
.Ar pgrp
に設定します。
.Ar pid
.Fa pid
が 0 の場合、呼び出しは現在のプロセスに適用されます。
.Pp
起動側がスーパユーザでない場合、影響を受けるプロセスは、起動側と同じ
実効ユーザ ID を持っているか、または起動プロセスの子孫である必要が
呼び出し側がスーパユーザでない場合、影響を受けるプロセスは、呼び出し側と同じ
実効ユーザ ID を持っているか、または呼び出し側プロセスの子孫である必要が
あります。
.Sh 戻り値
.Fn setpgid
@ -66,7 +69,7 @@
.Sh エラー
.Fn setpgid
は、次の場合に処理を失敗し、プロセスグループは変更されません。
.Bl -tag -width indent
.Bl -tag -width Er
.It Bq Er ESRCH
要求されたプロセスが存在しません。
.It Bq Er EPERM

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)setregid.2 8.2 (Berkeley) 4/16/94
.\" %FreeBSD: src/lib/libc/sys/setregid.2,v 1.6.2.2 2000/05/06 13:34:14 phantom Exp %
.\"
.Dd April 16, 1994
.Dt SETREGID 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm setregid
.Nd 実グループ ID と実効グループ ID を設定する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
@ -44,21 +47,21 @@
.Sh 解説
現在のプロセスの実グループ ID と実効グループ ID を引数で
指定されたように設定します。
特権のないユーザは、実グループ ID を実効グループ ID に、そして
実効グループ ID を実グループ ID に変更できます。スーパユーザだけが
他の変更を行えます。
特権のないユーザは、実グループ ID をその実効グループ ID に、または
実効グループ ID をその実グループ ID に変更できます。スーパユーザだけが
その他の変更を行えます。
.Pp
実グループ ID と実効グループ ID のどちらかに値 -1 を指定す
ると、システムは -1 パラメータの代わりに現在の ID で置き換えます。
.Pp
.Fn setregid
関数は、 set-group-ID プログラム内の実グループ ID と実効グループ ID を
スワップし、 set-group-ID 値を一時的に放棄できるように作られました。
この関数は正しく機能せず、その目的のためには今では
スワップし、 set-group-ID 値を一時的に放棄できるようにするために作られました。
この関数は正しく機能せず、その目的は今では
.Fn setegid
関数 (
.Xr setuid 2
を参照 ) の使用によってより良く達成できます。
を参照 ) を使用するとより良く達成できます。
.Pp
実グループ ID と実効グループ ID を同じ値に設定するときは、
標準の
@ -70,9 +73,9 @@
.Va errno
が設定されます。
.Sh エラー
.Bl -tag -width [EPERM]
.Bl -tag -width Er
.It Bq Er EPERM
現在のプロセスがスーパユーザでなく、実効グループ ID を実グループ ID に
現在のプロセスがスーパユーザでなく、その実効グループ ID をその実グループ ID に
変更する以外の変更が指定されました。
.El
.Sh 関連項目

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)setreuid.2 8.2 (Berkeley) 4/16/94
.\" %FreeBSD: src/lib/libc/sys/setreuid.2,v 1.6.2.2 2000/05/06 13:34:14 phantom Exp %
.\"
.Dd April 16, 1994
.Dt SETREUID 2
@ -37,27 +38,30 @@
.Sh 名称
.Nm setreuid
.Nd 実ユーザ ID と実効ユーザ ID を設定する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
.Fn setreuid "uid_t ruid" "uid_t euid"
.Sh 解説
現在のプロセスの実ユーザ ID と実効ユーザ ID が引数に従って設定されます。
現在のプロセスの実ユーザ ID と実効ユーザ ID が引数に従って設定
されます。
.Fa ruid
または
.Fa euid
が -1 の場合、現在の uid がシステムによって入れられます。特権のない
ユーザは、実ユーザ ID を実効ユーザ ID に、および実効ユーザ ID を
実ユーザ ID に変更できます。スーパユーザだけが他の変更を行えます。
が -1 の場合、現在の uid が指定されたことになります。特権のない
ユーザは、実ユーザ ID をその実効ユーザ ID に、または実効ユーザ ID を
その実ユーザ ID に変更できます。スーパユーザだけがその他の変更を行えます。
.Pp
.Fn setreuid
関数は set-user-ID プログラム内で実ユーザ ID と実効ユーザ ID を
スワップし、 set-user-ID の値を一時的に放棄するように使われてきました。
スワップし、 set-user-ID の値を一時的に放棄するために使われてきました。
この目的は、現在では
.Fn seteuid
関数 (
.Xr setuid 2
を参照 ) の使用によってより良く達成できます。
を参照 ) を使用するとより良く達成できます。
.Pp
実ユーザ ID と実効ユーザ ID を同じ値に設定するときは、標準の
.Fn setuid
@ -68,7 +72,7 @@
.Va errno
が設定されます。
.Sh エラー
.Bl -tag -width [EPERM]
.Bl -tag -width Er
.It Bq Er EPERM
現在のプロセスがスーパユーザでなく、実効ユーザ ID を実ユーザ ID に
変更する以外の変更が指定されました。

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)setsid.2 8.1 (Berkeley) 6/4/93
.\" %FreeBSD: src/lib/libc/sys/setsid.2,v 1.10.2.1 2000/04/22 17:07:06 phantom Exp %
.\"
.Dd June 4, 1993
.Dt SETSID 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm setsid
.Nd セッションを作成しプロセスグループ ID を設定する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft pid_t
@ -63,7 +66,7 @@
.Bl -tag -width Er
.It Bq Er EPERM
呼び出しプロセスが既にプロセスグループリーダであるか、
または呼び出しプロセス以外のプロセスグループ ID が
または呼び出しプロセス以外のプロセスのプロセスグループ ID が
呼び出しプロセスのプロセス ID と一致します。
.Sh 関連項目
.Xr setpgid 2 ,

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)setuid.2 8.1 (Berkeley) 6/4/93
.\" %FreeBSD: src/lib/libc/sys/setuid.2,v 1.12.2.1 1999/08/29 14:49:24 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/setuid.2,v 1.13.2.1 2000/04/22 17:07:06 phantom Exp %
.\"
.Dd June 4, 1993
.Dt SETUID 2
@ -41,6 +41,8 @@
.Nm setgid ,
.Nm setegid ,
.Nd ユーザ ID とグループ ID を設定する
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <unistd.h>
@ -55,7 +57,7 @@
.Sh 解説
.Fn setuid
関数は、現在のプロセスの実ユーザ ID と実効ユーザ ID と
現在のプロセスの保存された set-user-ID を指定した値に設定します。
退避グループ ID を指定した値に設定します。
.\" Comment out next block for !_POSIX_SAVED_IDS
.\" The real user ID and the saved set-user-ID are changed only if the
.\" effective user ID is that of the super user.
@ -68,14 +70,14 @@
.Fn setuid
関数が許容されるのは、指定の ID がプロセスの実ユーザ ID
または実効ユーザ ID に等しい場合、
または実効ユーザ ID がスーパユーザの実効ユーザ ID と等しい場合です。
または実効ユーザ ID がスーパユーザのものと等しい場合です。
.\" Comment out next line for !_POSIX_SAVED_IDS
.\" or the saved set-user-ID
.\" Next line is for Appendix B.4.2.2 case.
.Pp
.Fn setgid
関数は、現在のプロセスの実グループ ID と実効グループ ID と
現在のプロセスの保存された set-group-ID を指定した値に設定します。
退避グループ ID を指定した値に設定します。
.\" Comment out next block for !_POSIX_SAVED_IDS
.\" The real group ID and the saved set-group-ID are changed only if the
.\" effective user ID is that of the super user.
@ -88,7 +90,7 @@
.Fn setgid
関数が許容されるのは、指定の ID がプロセスの実グループ ID
または実効グループ ID に等しい場合、
または実効ユーザ ID がスーパユーザの実効ユーザ ID と等しい場合です。
または実効ユーザ ID がスーパユーザのものと等しい場合です。
.\" Comment out next line for !_POSIX_SAVED_IDS
.\" or the saved set-group-ID
.\" Next line is for Appendix B.4.2.2 case.
@ -96,24 +98,24 @@
.Fn seteuid
関数
.Pq Fn setegid
は、現在のプロセスの実効ユーザ ( グループ ID ) を設定します。
は、現在のプロセスの実効ユーザ (グループ ID) を設定します。
実効ユーザ ID は実ユーザ ID
または現在のプロセスの保存された set-user-ID (
または退避ユーザ ID (
.Xr intro 2
.Xr execve 2
を参照 ) の値に設定できます。これを利用し、
set-user-ID 実行可能ファイルの実効ユーザ ID を実ユーザ ID に切り替え、
次に set-user-ID 値に戻ることによって再有効化して切り替えることできます。
set-user-ID 実行可能ファイルの実効ユーザ ID を実ユーザ ID に切り替えた後に
set-user-ID 値に戻ることで、元の権限を得ることができます。
同じように、実効グループ ID は、
実グループ ID または保存された set-user-ID の値に設定できます。
実グループ ID または退避ユーザ ID の値に設定できます。
.Pp
.Sh 戻り値
正常に完了すると、これらの関数は 0 を返します。
そうでない場合は、-1 が返されます。
.Pp
ユーザがスーパユーザでない場合、または指定された uid が実 ID 、
実効 ID 、または保存された ID でない場合、これらの関数は -1 を返します。
ユーザがスーパユーザでない場合、または指定された uid がその実 ID 、
実効 ID 、または退避 ID でない場合、これらの関数は -1 を返します。
.Sh 関連項目
.Xr getgid 2 ,
.Xr getuid 2 ,
@ -137,7 +139,8 @@ set-user-ID
.Li _POSIX_SAVED_IDS
.Tn POSIX
コンセプトを基礎にして拡張してあり、規格の将来の改定用に提案されています。
コンセプトを基礎にして拡張してあり、規格の将来の改定用に提案されて
います。
.Sh 歴史
.Fn setuid
関数呼び出しと

View file

@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc/sys/shmat.2,v 1.6.2.2 1999/08/29 14:49:25 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/shmat.2,v 1.8.2.2 2000/12/29 14:44:53 ru Exp %
.\"
.Dd August 2, 1995
.Dt SHMAT 2
@ -32,6 +32,8 @@
.Nm shmat ,
.Nm shmdt
.Nd 共有メモリをアタッチまたはデタッチする
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <machine/param.h>
.Fd #include <sys/types.h>
@ -45,8 +47,9 @@
.Fn shmat
は、
.Fa shmid
によって識別された共有メモリセグメントを呼び出しプロセスのアドレス空間に
アタッチします。セグメントがアタッチされるアドレスは次のように決定されます。
によって識別された共有メモリセグメントを呼び出しプロセスの
アドレス空間にアタッチします。セグメントがアタッチされる
アドレスは次のように決定されます。
.\"
.\" These are cribbed almost exactly from Stevens, _Advanced Programming in
.\" the UNIX Environment_.
@ -103,6 +106,7 @@
.It Bq Er EINVAL
.Fa addr
は共有メモリセグメントを指していません。
.El
.Sh 関連項目
.Xr shmctl 2 ,
.Xr shmget 2

View file

@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc/sys/shmctl.2,v 1.7.2.2 1999/08/29 14:49:25 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/shmctl.2,v 1.9.2.2 2000/12/29 14:44:53 ru Exp %
.\"
.Dd July 17, 1995
.Dt SHMCTL 2
@ -31,6 +31,8 @@
.Sh 名称
.Nm shmctl
.Nd 共有メモリ制御
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <machine/param.h>
.Fd #include <sys/types.h>
@ -61,22 +63,23 @@
.Fa shm_perm.mode
の各メンバを
.Fa buf
指された構造体のメンバに変更します。
指された構造体のメンバに変更します。
呼び出しプロセスの実効ユーザ ID は、
.Fa shm_perm.uid
または
.Fa shm_perm.cuid
のどちらかと一致、またはスーパユーザ特権を持っている必要があります。
のどちらかと一致するか、またはスーパユーザ特権を持っている
必要があります。
.It Dv IPC_RMID
システムからセグメントを除去します。セグメントにアタッチしたすべての
プロセスが終了するまで、除去は有効になりません。しかし、いったん
IPC_RMID 操作が実行されると、それ以上のプロセスはそのセグメントに
プロセスが終了するまで、除去は行われません。しかし、いったん
IPC_RMID 操作が実行されると、それ以プロセスはそのセグメントに
アタッチすることを許されません。操作が成功するためには、
呼び出しプロセスの実効ユーザ ID が
.Fa shm_perm.uid
または
.Fa shm_perm.cuid
と一致、または呼び出しプロセスにスーパユーザ特権が必要です。
と一致するか、または呼び出しプロセスにスーパユーザ特権が必要です。
.\" .It Dv SHM_LOCK
.\" Locks the segment in memory. The calling process must have
.\" superuser privileges. Not implemented in FreeBSD.
@ -93,7 +96,7 @@ IPC_RMID
.\"
.Bd -literal
struct shmid_ds {
struct ipc_perm shm_perm; /* 操作パーミッション構造 */
struct ipc_perm shm_perm; /* 操作パーミッション構造 */
int shm_segsz; /* セグメントのサイズ (バイト単位) */
pid_t shm_lpid; /* 最後の共有メモリ操作のプロセス ID */
pid_t shm_cpid; /* 作成者のプロセス ID */
@ -101,7 +104,7 @@ struct shmid_ds {
time_t shm_atime; /* 最後の shmat() の時刻 */
time_t shm_dtime; /* 最後の shmdt() の時刻 */
time_t shm_ctime; /* shmctl() による最後の変更の時刻 */
void *shm_internal; /* システムのミス */
void *shm_internal; /* SystemV の愚行 */
};
.Ed
.Sh 戻り値

View file

@ -23,7 +23,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc/sys/shmget.2,v 1.6.2.2 1999/08/29 14:49:25 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/shmget.2,v 1.8.2.2 2000/12/29 14:44:54 ru Exp %
.\"
.Dd July 3, 1995
.Dt SHMGET 2
@ -31,6 +31,8 @@
.Sh 名称
.Nm shmget
.Nd 共有メモリの識別子の取得
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <machine/param.h>
.Fd #include <sys/types.h>
@ -44,7 +46,7 @@
.Fa key
.Fa flag
の値に従って、新しく作成した
の値に従って、新しく作成した共有メモリセグメント
または既存の共有メモリセグメントの識別子を戻します。
.\"
.\" The following bit about keys and modes also applies to semaphores
@ -72,7 +74,7 @@ IPC_PRIVATE
新しく作成された IPC オブジェクトのモードは、
.Fa flag
パラメータに渡す以下の定数の論理和で決まります。
.Bl -tag -width XSHMLWXX6XXX
.Bl -tag -width XSHM_WXX6XXX
.It Dv SHM_R
ユーザの読取りアクセス
.It SHM_W
@ -96,8 +98,8 @@ IPC_PRIVATE
新しい共有メモリセグメントを作成する場合、
.Fa size
は、新しいセグメントのバイト単位のサイズを表わします。
セグメントのサイズは、カーネルに便利なように倍数に
切り上げられることがあります (ページサイズなど)。
セグメントのサイズは、カーネルに便利なようにある倍数に
切り上げられることがあります (すなわちページサイズ)。
.Sh 戻り値
処理が正常に完了すると、
.Fn shmget
@ -125,7 +127,7 @@ IPC_PRIVATE
IPC_CREAT と IPC_EXCL が指定され、
.Fa key
に対応する共有メモリセグメントがすでに存在します。
.Pp
.El
.Sh 関連項目
.Xr shmat 2 ,
.Xr shmctl 2 ,

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)shutdown.2 8.1 (Berkeley) 6/4/93
.\" %FreeBSD: src/lib/libc/sys/shutdown.2,v 1.7.2.3 2000/08/23 00:56:03 jhb Exp %
.\"
.Dd June 4, 1993
.Dt SHUTDOWN 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm shutdown
.Nd 全二重接続の一部をシャットダウン
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/socket.h>
@ -63,8 +66,8 @@
呼び出しが成功すると 0 が返されます。
エラーが発生した場合は -1 が返されます。
.Sh エラー
以下の場合、呼び出しはエラーになります。
.Bl -tag -width ENOTCONNAA
の場合、呼び出しはエラーになります。
.Bl -tag -width Er
.It Bq Er EBADF
.Fa s
が有効な記述子ではありません。
@ -86,7 +89,7 @@
.Fn shutdown
関数呼び出しは、
.Bx 4.2
追加されました。
追加されました。
.Dv SHUT_
定数は、
.St -p1003.1g

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" From: @(#)sigaction.2 8.2 (Berkeley) 4/3/94
.\" %FreeBSD: src/lib/libc/sys/sigaction.2,v 1.19.2.1 1999/08/29 14:49:26 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/sigaction.2,v 1.22.2.5 2000/12/29 14:44:54 ru Exp %
.\"
.\" 2001/01/01 horikawa@jp.FreeBSD.org
.\" sigvec.2 を更新する場合は、共通部分の多い sigaction.2 も同時に更新
@ -42,13 +42,23 @@
.Sh 名称
.Nm sigaction
.Nd ソフトウェアシグナル機能
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <signal.h>
.Bd -literal
struct sigaction {
void (*sa_handler)(); /* シグナルハンドラ */
sigset_t sa_mask; /* 適用するシグナルマスク */
int sa_flags; /* 後述のシグナルオプションを参照 */
/*
* SA_SIGINFO フラグが使用されていない場合の
* SIG_DFL および SIG_IGN 用のシグナルハンドラ関数
*/
void (*sa_handler)(int);
/* SA_SIGINFO フラグを使用する場合のシグナルハンドラ関数 */
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask; /* 適用するシグナルマスク */
int sa_flags; /* 後述のシグナルオプション参照 */
};
.Ed
.Ft int
@ -75,10 +85,10 @@ struct sigaction {
されるまで延期されます。
配信時に取るアクションは、配信時に決まります。通常の場合は、
シグナルハンドラが、プロセスの現行スタックで動作します。
これはハンドラによって変更可能であり、
これはハンドラごとに変更可能であり、
変更すれば、シグナルは特殊な
.Em シグナルスタック
ハンドル可能です。
実行可能です。
.Pp
通常の場合、シグナルルーチンは、呼び出しの原因となったシグナルが
ブロックされた状態で動作しますが、その他のシグナルが発生する可能性は
@ -91,14 +101,14 @@ struct sigaction {
が呼び出された場合、またはシグナルがプロセスに配信された場合に、
シグナルマスクは変更されます。
.Pp
シグナル条件がプロセスで発生すると、シグナルが、プロセスで保留に
なっているシグナルの集合に追加されます。
あるシグナルの生起条件がプロセスで発生すると、そのシグナルが、
プロセスで保留中のシグナルの集合に追加されます。
そのシグナルがプロセスで
現在
.Em ブロック
されていない場合は、プロセスに配信されます。
シグナルは、
プロセスがオペレーティングシステムに入ったときに (システム呼び出し、
プロセスがオペレーティングシステムに入っている間に (システム呼び出し、
ページエラーやトラップ、クロック割込み中などに) 配信されます。
複数のシグナルの配信準備が同時に整った場合は、トラップで生じたシグナルが
先に配信されます。
@ -107,17 +117,17 @@ struct sigaction {
保留になっているシグナルの集合は、
.Xr sigpending 2
関数で返されます。
補足されたシグナルが配信されると、プロセスの現在の
捕捉されたシグナルが配信されると、プロセスの現在の
状態が保存され、新しいシグナルマスクが以下で説明するように算出されて、
シグナルハンドラが呼び出されます。
ハンドラの呼び出しは、
シグナル処理ルーチンが正常に戻った場合に、プロセスがシグナル配信前の
コンテキストで実行を再開するように編成されます。
コンテキストで実行を再開するように設定されます。
プロセスが別のコンテキストでの再開を望む場合は、
前のコンテキストそのものを回復するように編成する必要があります。
前のコンテキストそのものを自分自身で回復するように設定する必要があります。
.Pp
シグナルがプロセスに配信されると、プロセスの
シグナルハンドラが続く間 (または
シグナルハンドラの実行が続く間 (または
.Fn sigprocmask
が呼び出されるまで)、新しいシグナルマスクが設置されます。
このマスクは、現在のシグナルマスク集合、配信されるシグナル、
@ -134,33 +144,34 @@ struct sigaction {
かハンドラルーチン)、および指定されたシグナルの配信時に
使用するマスクが指定されます。
.Fa oact
が 0 でない場合は、シグナルの前の処理情報がユーザに返されます。
が 0 でない場合は、そのシグナルのそれまでの処理情報がユーザに返されます。
.Pp
シグナルハンドラが設置されると、通常の場合は
.Fn sigaction
を再度呼び出すか
.Xr execve 2
を実行するまでシグナルハンドラは設置されたまま残ります。
シグナルに固有なデフォルトアクションへは、
を実行するまで、そのシグナルハンドラは設置されたままです。
.Fa sa_handler
.Dv SIG_DFL
に設定することでリセットできます。
デフォルトは、プロセスの終了
に設定することで、
シグナルごとに固有なデフォルトアクションにリセットすることができます。
デフォルトとは、プロセスの終了
(コアダンプが取られることもあります)、アクションなし、プロセスの停止、
プロセスの継続です。
それぞれのシグナルのデフォルトアクションについては、
下のシグナルリストを参照してください。
のシグナルリストを参照してください。
.Fa sa_handler
.Dv SIG_DFL
である場合、シグナルのデフォルトアクションはシグナルの棄になります。
また、シグナルが保留になっている場合でも、シグナルがマスクさ
れていても保留中のシグナルは放棄されます。
である場合、シグナルのデフォルトアクションはシグナルの棄になります。
また、シグナルが保留になっている場合でも、シグナルがマスクされていても
保留中のシグナルは破棄されます。
.Fa sa_handler
.Dv SIG_IGN
に設定すると、シグナルの現在と保留中のインスタンスは無視されて放棄されます。
に設定すると、現在のシグナル実体と保留中のシグナル実体は無視されて
破棄されます。
.Pp
オプションは、
.Ar sa_flags
@ -178,20 +189,21 @@ struct sigaction {
シグナルで
.Fn sigaction
を呼び出す場合にこのビットを設定すると、システムは、呼び出し側プロセスの
子が終了したときにゾンビプロセスを作成しなくなります。呼び出し側プロセスが
子プロセスが終了したときにゾンビプロセスを作成しなくなります。
そのあと、呼び出し側プロセスが
.Xr wait 2
かそれに相当するものを続けて発行すると、呼び出し側プロセスのすべて
かそれに相当する関数を実行すると、呼び出し側プロセスのすべて
の子プロセスが終了するまでブロックし、次に
.Va errno
.Dv ECHILD
.Er ECHILD
に設定して -1 を返します。
.It Dv SA_ONSTACK
このビットを設定すると、システムは、
.Xr sigaltstack 2
で指定された
.Em シグナルスタック
で、プロセスにシグナルを配信します。
の上で、プロセスにシグナルを配信します。
.It Dv SA_NODEFER
このビットを設定すると、配信済みシグナルのさらなる発生が、
ハンドラの実行中にマスクされなくなります。
@ -199,12 +211,23 @@ struct sigaction {
このビットを設定すると、シグナルが配信された瞬間に、ハンドラが
.Dv SIG_DFL
にリセットされます。
.\" Still missing:
.\" .It Dv SA_SIGINFO
.It Dv SA_SIGINFO
このビットが設定されている場合、ハンドラ関数は、
sigaction 構造体の sa_sigaction メンバが指すものと
見なします。ハンドラ関数は、先に示したプロトタイプもしくは後で示す
.Sx 使用例
に一致しなくてはなりません。
このビットは、
.Dv SIG_DFL
もしくは
.Dv SIG_IGN
を割り当てる時には設定してはいけません。
.El
.Pp
以下のリストのシステムコール中にシグナルが補足されると、呼び出しは、エラー
.Dv EINTR
次に挙げるシステムコールの実行中にシグナルが捕捉されると、
そのシステムコールの呼び出しは、
エラー
.Er EINTR
で強制終了されるか、要求より短いデータ転送で戻るか、
または再開されます。
保留中のシステムコールの再開は、
@ -213,7 +236,7 @@ struct sigaction {
.Dv SA_RESTART
ビットを設定することで要求できます。
影響を受けるシステムコールは、
通信チャネルか遅いデバイス (端末など。通常ファイルではない) に対する
通信チャネルか遅いデバイス (端末など、通常ファイルではないもの) に対する
.Xr open 2 ,
.Xr read 2 ,
.Xr write 2 ,
@ -224,52 +247,53 @@ struct sigaction {
.Xr wait 2 ,
.Xr ioctl 2
の途中です。
です。
しかし、すでに実行されているシステムコールは再開されず、
部分的な結果 (短い読取りカウントなど) を返します。
部分的な処理成功の結果 (短い読取りカウントなど) を返します。
.Pp
.Xr fork 2
.Xr vfork 2
の後では、すべてのシグナル、シグナルマスク、シグナルスタック、
再開 / 割込みフラグが子に継承されます。
再開フラグ、割込みフラグが子プロセスに継承されます。
.Pp
.Xr execve 2
は、補足されたすべてのシグナルのデフォルトアクションを元に戻し、
ユーザスタックで受信されるすべてのシグナルをリセットします。
は、捕捉されていたすべてのシグナルのデフォルトアクションを元に戻し、
すべてのシグナルをユーザスタックで受信されるようにリセットします。
無視されたシグナルは無視されたままです。
シグナルマスクは同じ状態のままです。
保留中のシステムコールを再開するシグナルは、その再開を続けます。
保留中のシステムコールを再開する設定のシグナルは、その再開の設定のままです。
.Pp
以下はすべてのシグナルのリストです。名称は、インクルードファイル
.Aq Pa signal.h
と同じです。
にあるものと同じです。
.Bl -column SIGVTALARMXX "create core imagexxx"
.It Sy " 名称" " デフォルトアクション" " 説明"
.It Sy "名称 デフォルトアクション 説明"
.It Dv SIGHUP No " プロセスの終了" " 端末ラインのハングアップ"
.It Dv SIGINT No " プロセスの終了" " プログラムの割込み"
.It Dv SIGQUIT No " コアイメージの作成" " プログラムの終了"
.It Dv SIGQUIT No " コアイメージの作成" " プログラムの中断終了"
.It Dv SIGILL No " コアイメージの作成" " 不正な命令"
.It Dv SIGTRAP No " コアイメージの作成" " トラップの追跡"
.It Dv SIGABRT No " コアイメージの作成" Xr abort 3 の呼び出し (以前の
.It Dv SIGTRAP No " コアイメージの作成" " トラップのトレース"
.It Dv SIGABRT No " コアイメージの作成" Ta Xr abort 3
の呼び出し (以前の
.Dv SIGIOT )
.It Dv SIGEMT No " コアイメージの作成" " 実行された命令のエミュレート"
.It Dv SIGEMT No " コアイメージの作成" " 命令実行のエミュレート"
.It Dv SIGFPE No " コアイメージの作成" " 浮動小数例外"
.It Dv SIGKILL No " プロセスの終了" " プログラムの終了"
.It Dv SIGKILL No " プロセスの終了" " プログラムの強制終了"
.It Dv SIGBUS No " コアイメージの作成" " バスエラー"
.It Dv SIGSEGV No " コアイメージの作成" " セグメンテーション違反"
.It Dv SIGSYS No " コアイメージの作成" " 存在しないシステムコールの呼び出し"
.It Dv SIGPIPE No " プロセスの終了" " 読取り側がないパイプへの書込み"
.It Dv SIGALRM No " プロセスの終了" " リアルタイムタイマの満了"
.It Dv SIGTERM No " プロセスの終了" " ソフトウェア終了シグナル"
.It Dv SIGURG No " シグナルの放棄" " 緊急事態がソケットに存在"
.It Dv SIGSTOP No " プロセスの停止" " 停止 (補足も無視もできません)"
.It Dv SIGURG No " シグナルの破棄" " 緊急状況がソケットに発生"
.It Dv SIGSTOP No " プロセスの停止" " 停止 (捕捉も無視もできません)"
.It Dv SIGTSTP No " プロセスの停止" " キーボードから生成された停止シグナル"
.It Dv SIGCONT No " シグナルの棄" " 停止後の継続"
.It Dv SIGCHLD No " シグナルの放棄" " 子ステータスの変化"
.It Dv SIGTTIN No " プロセスの停止" " 制御端末からバックグラウンド読取りしようとした"
.It Dv SIGTTOU No " プロセスの停止" " 制御端末にバックグラウンド書込みしようとした"
.It Dv SIGIO No " シグナルの放棄" " 記述子に "
.It Dv SIGCONT No " シグナルの棄" " 停止後の継続"
.It Dv SIGCHLD No " シグナルの破棄" " 子プロセスの状態変化"
.It Dv SIGTTIN No " プロセスの停止" " バックグラウンドプロセスが制御端末から読取りしようとした"
.It Dv SIGTTOU No " プロセスの停止" " バックグラウンドプロセスが制御端末に書込みしようとした"
.It Dv SIGIO No " シグナルの破棄" " 記述子への "
.Tn I/O
可能 (
.Xr fcntl 2
@ -287,8 +311,8 @@ struct sigaction {
.It Dv SIGPROF No " プロセスの終了" " プロファイリングタイマアラーム (
.Xr setitimer 2
参照)
.It Dv SIGWINCH No " シグナルの棄" " ウィンドウサイズの変化"
.It Dv SIGINFO No " シグナルの棄" " キーボードからのステータス要求"
.It Dv SIGWINCH No " シグナルの棄" " ウィンドウサイズの変化"
.It Dv SIGINFO No " シグナルの棄" " キーボードからのステータス要求"
.It Dv SIGUSR1 No " プロセスの終了" " ユーザ定義シグナル 1"
.It Dv SIGUSR2 No " プロセスの終了" " ユーザ定義シグナル 2"
.El
@ -402,7 +426,8 @@ struct sigaction {
.Pp
上のリストに記載されていないすべての関数は、シグナルに関して安全でない
と考えられます。
つまり、そのような関数の動きは、シグナルハンドラから呼び出されると不定です。
つまり、そのような関数がシグナルハンドラから呼び出されるときの動作は、
未定義です。
.Pp
.Sh 戻り値
0 は、呼び出しに問題がなかったことを表わします。
@ -411,23 +436,77 @@ struct sigaction {
がエラーの理由を示すように設定されていることを表わします。
.Pp
.Sh 使用例
ハンドラルーチンは、以下のように宣言できます。
.Bd -literal -offset indent
void handler(sig, code, scp)
int sig, code;
struct sigcontext *scp;
.Ed
ハンドラが一致する可能性のあるプロトタイプは 3 つあります。
.Bl -tag -offset indent -width short
.It ANSI C:
.Ft void
.Fn handler int ;
.It 伝統的な BSD スタイル:
.Ft void
.Fn handler int "int code" "struct sigcontext *scp" ;
.It POSIX SA_SIGINFO:
.Ft void
.Fn handler int "siginfo_t *info" "void *context" ;
.El
.Pp
フラグ中で SA_SIGINFO ビットが設定されている場合、
ハンドラ関数は SA_SIGINFO プロトタイプに一致しなくてはなりません。
その場合、
.Dv sigaction
構造体の
.Dv sa_sigaction
メンバがハンドラ関数を指していなければなりません。
この方法で SIG_DFL あるいは SIG_IGN を割り当ててはいけないことに
注意してください。
.Pp
SA_SIGINFO フラグが設定されていない場合、ハンドラ関数は
ANSI C もしくは伝統的な BSD プロトタイプのどちらかに
一致しなくてはならず、
.Dv sigaction
構造体の
.Dv sa_handler
メンバがハンドラ関数をさしていなければなりません。
実際には、
.Fx
は常に後者である BSD プロトタイプの 3 つの引数を送りますし、
ANSI C プロトタイプはそのサブセットになっていますので、
どちらでも動作します。
.Fx
インクルードファイルの
.Dv sa_handler
メンバ宣言は、(POSIX の要求に従い) ANSI C のものです。
そのため、BSD スタイルの関数のポインタの場合、
警告メッセージを無くしてコンパイルするには
キャストする必要があります。
伝統的な BSD スタイルは移植性がなく、その機能性も
SA_SIGINFO ハンドラの完全な部分集合になっていますので、
BSD スタイルを使うことは推奨されていません。
.Pp
.Fa sig
は、ハードウェアエラーとトラップがマップされているシグナル番号です。
引数はシグナル番号で、<signal.h> の
.Dv SIG...
値のうちの 1 つです。
BSD スタイルのハンドラの
.Fa code
は、ハードウェアが提供する定数かコードであるパラメータです。
引数および SA_SIGINFO ハンドラへの
.Dv info
引数の
.Dv si_code
メンバには、シグナルの発生理由を説明した数値コードが
含まれています。通常、この数値コードは
<sys/signal.h> にある
.Dv SI_...
値の 1 つであるか、もしくはシグナルに特化したコード、すなわち
SIGFPE に対する
.Dv FPE_...
値です。
BSD スタイルのハンドラの
.Fa scp
は、
.Fa sigcontext
構造体のポインタ (
.Aq Pa signal.h
で定義されています) で、シグナル前のコンテキストを回復するために使用されます。
引数は sigcontext 構造体のインスタンスを指しています。
.Pp
POSIX SA_SIGINFO ハンドラの
.Fa context
引数は、ucontext_t のインスタンスを指しています。
.Sh エラー
以下のうち 1 つが発生すると、
.Fn sigaction
@ -455,7 +534,7 @@ struct sigcontext *scp;
.Dv SA_ONSTACK
フラグと
.Dv SA_RESTART
フラグは、
フラグは、Berkeley の拡張機能です。
.Dv SIGTRAP ,
.Dv SIGEMT ,
.Dv SIGBUS ,
@ -468,10 +547,9 @@ struct sigcontext *scp;
.Dv SIGPROF ,
.Dv SIGWINCH ,
.Dv SIGINFO
シグナルと同じように、
Berkeley の拡張機能です。これらのシグナルは、
シグナルも同様です。これらのシグナルは、
.Tn BSD
から派生した、ほとんどのシステムで使用できます。
から派生したシステムのほとんどで使用できます。
.Dv SA_NODEFER
フラグと
.Dv SA_RESETHAND

View file

@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)sigaltstack.2 8.2 (Berkeley) 5/1/95
.\" %FreeBSD: src/lib/libc/sys/sigaltstack.2,v 1.9.2.2 1999/08/29 14:49:26 peter Exp %
.\" %FreeBSD: src/lib/libc/sys/sigaltstack.2,v 1.11.2.3 2000/12/08 13:49:32 ru Exp %
.\"
.Dd May 1, 1995
.Dt SIGALTSTACK 2
@ -38,6 +38,8 @@
.Sh 名称
.Nm sigaltstack
.Nd シグナルスタックコンテキストの設定や入手
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <signal.h>
.Bd -literal
@ -79,11 +81,12 @@ struct sigaltstack {
は -1 を戻し
.Va errno
.Dv EINVAL
.Er EINVAL
に設定します。スタックが無効になると、すべてのシグナルは通常の
ユーザスタックで動作するようになります。スタックが後で有効にると、
代替スタックで処理するように指定されたすべてのシグナルは、
その指定どおりに再開されます。
.Pp
.Fa oss
を 0 以外にすると、現在のシグナルスタックの状態が戻されます。
.Fa ss_flags
@ -130,7 +133,7 @@ if (sigaltstack(&sigstk,0) < 0)
以下のうち 1 つが発生すると、
.Fn sigaltstack
は処理を失敗し、シグナルスタックコンテキストは変更されずに残ります。
.Bl -tag -width [ENOMEM]
.Bl -tag -width Er
.It Bq Er EFAULT
.Fa ss

View file

@ -30,6 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)sigblock.2 8.1 (Berkeley) 6/2/93
.\" %FreeBSD: src/lib/libc/compat-43/sigblock.2,v 1.5.2.1 2000/04/22 16:46:18 phantom Exp %
.\"
.Dd June 2, 1993
.Dt SIGBLOCK 2
@ -37,6 +38,8 @@
.Sh 名称
.Nm sigblock
.Nd シグナルをブロックする
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <signal.h>
.Ft int
@ -47,11 +50,11 @@
.Bf -symbolic
このインタフェースは、
.Xr sigprocmask 2
更新されました
よって旧式のものとなっています
.Ef
.Pp
.Fn sigblock
は、現在、配信をブロックされているシグナルのセットに、
は、現在、配信をブロックされているシグナルの集合に、
.Fa mask
で指定したシグナルを追加します。
.Fa mask

View file

@ -1,5 +1,5 @@
.\" Copyright (c) 1983, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\" The Regents of the University of California. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
@ -11,8 +11,8 @@
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
@ -29,8 +29,9 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" From: @(#)socket.2 8.1 (Berkeley) 6/4/93
.\" %FreeBSD: src/lib/libc/sys/socket.2,v 1.9.2.1 1999/08/29 14:49:27 peter Exp %
.\" From: @(#)socket.2 8.1 (Berkeley) 6/4/93
.\" $FreeBSD: src/lib/libc/sys/socket.2,v 1.12.2.4 2000/12/29 14:44:54 ru Exp
$
.\"
.Dd November 24, 1997
.Dt SOCKET 2
@ -38,6 +39,8 @@
.Sh 名称
.Nm socket
.Nd 通信のエンドポイントの作成
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/socket.h>
@ -57,12 +60,42 @@
るフォーマットは以下のとおりです。
.Pp
.Bd -literal -offset indent -compact
PF_LOCAL (PF_UNIX と呼ばれていた、ホスト内プロトコル),
PF_INET (ARPA インターネットプロトコル),
PF_ISO (ISO プロトコル),
PF_CCITT (X.25 のような ITU-T プロトコル),
PF_NS (Xerox Network Systems プロトコル),
.\"PF_IMPLINK (IMP \*(lqhost at IMP\*(rq link layer).
PF_LOCAL PF_UNIX と呼ばれていた、ホスト内プロトコル
PF_UNIX ホスト内プロトコル、使用は奨励されない。
PF_LOCAL を使用のこと
PF_INET IPv4 プロトコル
PF_IMPLINK ARPAnet IMP アドレス
PF_PUP BSP のような PUP プロトコル
PF_CHAOS MIT CHAOS プロトコル
PF_NS XNS (Xerox Network Systems) プロトコル
PF_ISO ISO プロトコル
PF_OSI 開放型システム間相互接続プロトコル
(Open System Interconnection)
PF_ECMA ヨーロッパ電子計算機工業会
(European Computer Manufacturers)
PF_DATAKIT データキット(Datakit)プロトコル
PF_CCITT X.25 のような ITU-T プロトコル
PF_SNA IBM SNA
PF_DECnet DECnet
PF_DLI DEC Direct / DLI (Data Link Interface) プロトコル
PF_LAT LAT プロトコル
PF_HYLINK NSC ハイパーチャネル
PF_APPLETALK AppleTalk プロトコル
PF_ROUTE 内部ルーティングプロトコル
PF_LINK リンク層インタフェース
PF_XTP XTP プロトコル (Xpress Transfer Protocol)
PF_COIP コネクションオリエンテッド IP, 別名 ST II
PF_CNT Computer Network Technology 社のプロトコル
PF_SIP SIP プロトコル (Simple Internet Protocol)
PF_IPX Novell 社 IPX (Intenet Packet eXchange) プロトコル
PF_RTIP RTIP パケットの識別に使用
PF_PIP PIP パケットの識別に使用
PF_ISDN 統合ディジタル通信サービス網(ISDN)
PF_KEY 内部鍵管理機能
PF_INET6 IPv6 プロトコル
PF_NATM ATM に直接アクセス
PF_ATM ATM
PF_NETGRAPH Netgraph ソケット
.Ed
.Pp
ソケットには、通信の種類を指定する
@ -70,12 +103,19 @@ PF_NS (Xerox Network Systems
があります。現在、定義されているタイプは以下のとおりです。
.Pp
.Bd -literal -offset indent -compact
SOCK_STREAM
SOCK_DGRAM
SOCK_RAW
SOCK_SEQPACKET
SOCK_RDM
SOCK_STREAM ストリーム型ソケット
SOCK_DGRAM データグラム型ソケット
SOCK_RAW 低レベルプロトコルインタフェース
SOCK_RDM 伝達が信頼できるパケット
SOCK_SEQPACKET 順序付きパケットストリーム
.Ed
.\" 原文は
.\" SOCK_RDM Sequenced packet stream,
.\" SOCK_SEQPACKET Reliably-delivered packet
.\" となっていたが、
.\" SOCK_RDM Reliably-delivered packet
.\" SOCK_SEQPACKET Sequenced packet stream,
.\" に変更 。send-pr済み (docs/25797) yuko@veltec.co.jp
.Pp
.Dv SOCK_STREAM
タイプは、連続した、信頼性のある、双方向接続ベースの
@ -83,20 +123,21 @@ SOCK_RDM
サポートされることもあります。
.Dv SOCK_DGRAM
ソケットでは、データグラム
(コネクションレスで信頼性のない、固定最大長 (一般的には小さい) メッセージ)
(コネクションレスで信頼性のない、最大長が固定の (一般的には小さい)
メッセージ)
がサポートされます。
.Dv SOCK_SEQPACKET
ソケットは、連続した、信頼性のある、双方向接続ベースの
最大長のデータグラムの転送を提供します。
最大長が固定のデータグラムの転送を提供します。
各読取りシステムコールでパケット全体を読み取る必要があるかもしれません。
この機能はプロトコル固有のもので、現在のところ
.Dv PF_NS
でしか実されていません。
でしか実されていません。
.Dv SOCK_RAW
ソケットでは、内部ネットワークプロトコ
ルとインタフェースにアクセスできます。スーパユーザしか使用できない
.Dv SOCK_RAW
タイプ、および計画されているがまだ実されていない
タイプ、および計画されているがまだ実されていない
.Dv SOCK_RDM
については、ここでは説明しません。
.Pp
@ -106,7 +147,9 @@ SOCK_RDM
特定ソケットタイプをサポートします。しかし、複数のプロトコルが
存在することも可能です。この場合は、特定プロトコルをこの方法で
指定する必要があります。使用するプロトコル番号は、
通信を行なう通信ドメインに固有です。
通信を行う
.Dq 通信ドメイン
に固有です。
.Xr protocols 5
を参照してください。
.Pp
@ -132,22 +175,22 @@ SOCK_RDM
を呼び出し、接続オペレーションに乗せてデータを送信できます。)
セッションが終了したら、
.Xr close 2
が実行されることがあります。帯域外データは、
を実行しても構いません。帯域外データは、
.Xr send 2
で説明されているように送信し、
.Xr recv 2
で説明されているように受信できます。
.Pp
.Dv SOCK_STREAM
の実に使用する通信プロトコルでは、データの喪失や重複がないことが
の実に使用する通信プロトコルでは、データの喪失や重複がないことが
保証されます。ピアプロトコルにバッファ空間があるデータの一部を
合理的な時間内に問題なく転送できない場合は、
接続が破損したとみなされて呼び出しがエラーとなり、
-1 が戻されてグローバル変数
.Va errno
.Dv ETIMEDOUT
が設定されます。その他のアクティビティがない場合、
.Er ETIMEDOUT
が設定されます。その他の動作がない場合、
プロトコルは約 1 分ごとに転送を強制し、ソケットの
.Dq 接続
を任意に維持します。一定期間 (例、5 分間)
@ -158,7 +201,7 @@ SOCK_RDM
この場合、シグナルを処理しないプロセスは終了します。
.Pp
.Dv SOCK_SEQPACKET
ソケットは、
ソケットは、
.Dv SOCK_STREAM
ソケットとほぼ同じシステムコールです。
.Xr read 2
@ -170,16 +213,17 @@ SOCK_RDM
.Dv SOCK_RAW
ソケットでは、
.Xr send 2
の呼出しで指定された通信相手にデータグラムを送信できます。一般的に
データグラムは、次のデータグラムのアドレスを戻す
の呼出しで指定された通信相手にデータグラムを送信できます。
一般的にデータグラムは、次のデータグラムのアドレスを戻す
.Xr recvfrom 2
で受信されます。
.Pp
.Xr fcntl 2
を呼び出すと、帯域外データを受信した場合の
.Dv SIGURG
シグナルを受信するプロセスグループを指定できます。非ブロック I/O、
および I/O イベントの非同期通知も、
シグナルを受信するプロセスグループを指定できます。
非ブロッキング入出力、
および入出力イベントの非同期通知も、
.Dv SIGIO
で有効にできます。
.Pp
@ -199,7 +243,7 @@ SOCK_RDM
以下のような場合、
.Fn socket
の呼び出しはエラーになります。
.Bl -tag -width EPROTONOPSUPPORTA
.Bl -tag -width Er
.It Bq Er EPROTONOSUPPORT
プロトコルタイプか指定されたプロトコルがドメインでサポートされていません。
.It Bq Er EMFILE
@ -222,12 +266,14 @@ SOCK_RDM
.Xr ioctl 2 ,
.Xr listen 2 ,
.Xr read 2 ,
.Xr recv 2 ,
.Xr select 2 ,
.Xr send 2 ,
.Xr shutdown 2 ,
.Xr socketpair 2 ,
.Xr write 2 ,
.Xr getprotoent 3 ,
.Xr netgraph 4 ,
.Xr protocols 5
.Re
.Rs
@ -245,3 +291,4 @@ SOCK_RDM
関数呼び出しは
.Bx 4.2
で登場しました。

View file

@ -36,7 +36,9 @@
.Os BSD 4
.Sh 名称
.Nm sync
.Nd ディスク上のディスクブロックをメモリ上の状態と同期化する
.Nd ファイルシステムの更新をスケジュールする
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft void
@ -45,10 +47,10 @@
.Fn sync
関数は、ブロックバッファキャッシュの修正済み
バッファをディスクに強制的に書き出します。カーネルは
この情報をコアに維持し、システムが要求するディスク I/O
この情報をメモリ上に維持し、システムが要求するディスク I/O
転送の数を減らします。システムのクラッシュ後に
キャッシュの情報が失われると、ユーザプロセス
.Xr update 4
.Xr syncer 4
.Fn sync
を頻繁に呼び出します
@ -59,7 +61,7 @@
を使用します。
.Sh 関連項目
.Xr fsync 2 ,
.Xr update 4 ,
.Xr syncer 4 ,
.Xr sync 8
.Sh バグ
.Fn sync

View file

@ -40,6 +40,8 @@
.Sh 名称
.Nm sysarch
.Nd アーキテクチャ依存型システムコール
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <machine/sysarch.h>
.Ft int
@ -73,4 +75,4 @@
.Sh 歴史
このマニュアルページは、
.Nx
から取れました。
から取得されました。

View file

@ -38,6 +38,8 @@
.Nm syscall ,
.Nm __syscall
.Nd 間接的なシステムコール
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/syscall.h>
.Fd #include <unistd.h>
@ -49,7 +51,8 @@
.Fn syscall
は、指定した
.Fa number
がアセンブリ言語インタフェースにあるシステムコールを、
を持つアセンブリ言語インタフェース
のシステムコールを、
指定した引数で実行します。システムコールのシンボリック定数は、
ヘッダファイル
.Ao Pa sys/syscall.h Ac

View file

@ -38,6 +38,8 @@
.Nm truncate ,
.Nm ftruncate
.Nd 指定した長さにファイルを切り捨てたり拡張したりする
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
@ -46,16 +48,16 @@
.Fn ftruncate "int fd" "off_t length"
.Sh 解説
.Fn truncate
は、
は、
.Fa path
で指定されるファイルか
.Fa fd
で参照
されるファイルのサイズが、
.Fa length
バイトになるように切り捨てられたり拡張されたりします。
バイトになるように切り捨てたり拡張します。
ファイルがこのサイズより大きい場合は、余分なデータが失われます。
ファイルがこのサイズより小さい場合は、0 を書き込んで拡張されます。
ファイルがこのサイズより小さい場合は、0 が書き込まれたように拡張されます。
.Fn ftruncate
では、ファイルが書込み用に開いている必要があります。
.Sh 戻り値
@ -66,7 +68,7 @@
.Sh エラー
.Fn truncate
は、以下のような場合に処理を失敗します。
.Bl -tag -width [ENOTDIR]
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
.It Bq Er ENAMETOOLONG
@ -85,7 +87,7 @@
.It Bq Er EROFS
指定されたファイルは読取り専用ファイルシステム上にあります。
.It Bq Er ETXTBSY
ファイルが、実行中のピュアプロシージャ (共有テキスト) ファイルになっている
ファイルが、実行中のピュアプロシージャ (共有テキスト) ファイルです
.It Bq Er EIO
inode の更新をしている間に入出力エラーが発生しました。
.It Bq Er EFAULT
@ -95,7 +97,7 @@ inode
.Pp
.Fn ftruncate
は、以下のような場合に処理を失敗します。
.Bl -tag -width [ENOTDIR]
.Bl -tag -width Er
.It Bq Er EBADF
.Fa fd
が有効な記述子ではありません。

View file

@ -38,6 +38,8 @@
.Sh 名称
.Nm umask
.Nd ファイルモード生成マスクの設定
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/stat.h>
.Ft mode_t
@ -53,18 +55,18 @@
.Xr mkdir 2 ,
.Xr mkfifo 2
などのシステムコールが使用し、ファイルモードで要求される
対応するビットをオフに切り替えます (
対応するビットをオフにます (
.Xr chmod 2
を参照) 。
このようにビットをクリアにすると、各ユーザはファイルへの
デフォルトアクセスを禁止できるようになります。
ビットをクリアにすることで、各ユーザはそのファイルへの
デフォルトアクセスを制限することができます。
.Pp
デフォルトのマスク値は、S_IWGRP | S_IWOTH
(022、所有者のみの書込みアクセス) です。
子プロセスは、呼び出しプロセスのマスクを継承します。
.Pp
.Sh 戻り値
ファイルモードマスクの前の値が、呼び出しによって返されます。
呼び出しによって、以前のファイルモードマスクの値が返されます。
.Pp
.Sh エラー
.Fn umask

View file

@ -38,6 +38,8 @@
.Sh 名称
.Nm undelete
.Nd 削除したファイルの回復
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
@ -53,7 +55,7 @@
ユニオンスタックの下層にあるオブジェクトが表示されるようにします。
.Pp
最終的に
.Nm undelete
.Fn undelete
機能は、その他のログ構造ファイルシステムのような削除済みファイルを
回復できるファイルシステムに拡張されるでしょう。
.Sh 戻り値
@ -64,7 +66,7 @@
.Sh エラー
.Fn undelete
は、以下の場合にエラーとなります。
.Bl -tag -width ENAMETOOLONGAA
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
.It Bq Er ENAMETOOLONG
@ -95,7 +97,5 @@
.Xr unlink 2 ,
.Xr mount_union 8
.Sh 歴史
.Nm undelete
関数呼び出しは、
.Bx 4.4-Lite
ではじめて登場しました。
.Fn undelete
関数呼び出しは、4.4BSD-Lite ではじめて登場しました。

View file

@ -38,6 +38,8 @@
.Sh 名称
.Nm unlink
.Nd ディレクトリエントリの削除
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
@ -49,7 +51,7 @@
で指定されたリンクをディレクトリから削除し、
そのリンクで参照されていたファイルのリンク数を減らします。
ファイルのリンク数が 0 になり、ファイルを開いているプロセスがなくなると、
ファイルに関連するすべてのリソースが再されます。
ファイルに関連するすべてのリソースが再利用されます。
最後のリンクが削除されたときに、ファイルを開いているプロセスが
1 つ以上あると、リンクは削除されますが、ファイルの削除は、
そのファイルへのすべての参照が閉じられるまで延期されます。
@ -63,7 +65,7 @@
.Sh エラー
.Fn unlink
は、以下の場合に処理を失敗します。
.Bl -tag -width ENAMETOOLONGAA
.Bl -tag -width Er
.It Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
.It Bq Er ENAMETOOLONG

View file

@ -42,6 +42,8 @@
.Nm lutimes ,
.Nm futimes
.Nd ファイルアクセス時刻と更新時刻の設定
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/time.h>
.Ft int
@ -97,7 +99,7 @@
指定されたパスには、検索が許可されていないディレクトリが含まれています。
あるいは
.Fa times
引数がヌルで、プロセスの実効ユーザ ID がファイルの所有者と一致せず、
引数が NULL で、プロセスの実効ユーザ ID がファイルの所有者と一致せず、
しかもスーパユーザでもなく、書込みアクセスが拒否されました。
.It Bq Er EFAULT
.Fa path

View file

@ -38,6 +38,8 @@
.Sh 名称
.Nm vfork
.Nd 効率的な方法で仮想メモリに新しいプロセスを生成
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <unistd.h>
.Ft int
@ -46,12 +48,12 @@
.Fn vfork
では、古いプロセスのアドレス空間を完全にコピーせずに、
新しいプロセスを作成できます。
ページされた環境では、古いプロセスのアドレス空間を完全にコピーすることは、
ページングする環境では、古いプロセスのアドレス空間を完全にコピーすることは、
非常に非効率的です。
.Xr fork 2
での目的が、
する目的が、
.Xr execve 2
の新しいシステムコンテキストの作成である場合に有効です。
のための新しいシステムコンテキストの作成である場合に有効です。
.Fn vfork
は、
.Xr execve 2
@ -102,7 +104,7 @@
.Xr fork 2
と同じです。
.Sh バグ
このシステム呼び出しは、適切なシステム共有メカニズム
このシステムコールは、適切なシステム共有メカニズム
が実現したときに削除されます。削除された場合は、
.Xr fork 2
と同義になるので、
@ -117,9 +119,9 @@
.Dv SIGTTIN
シグナルが送信されません。その代わりに出力、または、
.Xr ioctl 2
呼び出しが許可され、EOF によって終端を示された結果を入力します。
呼び出しが許可され、入力しようとすると EOF となります。
.Sh 歴史
.Fn vfork
関数呼び出しは、
.Bx 3.0
.Bx 2.9
で登場しました。

View file

@ -40,6 +40,8 @@
.Nm wait4 ,
.Nm wait3
.Nd プロセスの終了待機
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/wait.h>
@ -65,7 +67,7 @@
領域には下の定義のように終了したプロセスの終了情報が入ります。
.Pp
.Fn wait4
呼出しは、特定の子プロセスを待機する必要があり、
呼出しは、特定の子プロセスを待必要があり、
子プロセスが蓄積したリソース利用統計あるいは
オプションを必要とするプログラムのために、
より一般的なインタフェースを提供します。
@ -74,20 +76,20 @@
を使用して実装されています。
.Pp
.Fa wpid
パラメータは待機する子プロセスの集合を指定します。
パラメータは待つべき子プロセスの集合を指定します。
.Fa wpid
が -1 である場合、この呼出しはすべての子プロセスを待機します。
が -1 である場合、この呼出しはすべての子プロセスを待ます。
.Fa wpid
が 0 である場合、この呼出しは、呼出し側のプロセスグループの
すべての子プロセスを待機します。
すべての子プロセスを待ます。
.Fa wpid
が 0 より大きい場合、この呼出しは プロセス ID が
.Fa wpid
であるプロセスを待機します。
であるプロセスを待ます。
.Fa wpid
が -1 より小さい場合、呼出しは、プロセスグループ ID が
.Fa wpid
の絶対値に等しいプロセスを待機します。
の絶対値に等しいプロセスを待ます。
.Pp
.Fa status
パラメータは、以下のように定義されています。
@ -195,10 +197,10 @@
.Fn wait3 ,
.Fn waitpid
が戻った場合は、子のプロセス ID が呼出し側プロセスに戻されます。
以前に待機した子がない場合は、-1 が戻されて
まだ wait されていない子プロセスが存在しない場合は、-1 が戻されて
.Va errno
.Bq Er ECHILD
.Er ECHILD
に設定されます。
.Dv WNOHANG
が指定され、停止した子または終了した子がない場合は 0 が戻されます。
@ -211,7 +213,7 @@
は以下の場合にエラーとなり、ただちに戻ります:
.Bl -tag -width Er
.It Bq Er ECHILD
呼出し側プロセスに、待機していない子プロセスが存在しません。
呼出し側プロセスは、wait されていない子プロセスを持ちません。
.It Bq Er EFAULT
.Fa status
引数か

View file

@ -39,6 +39,8 @@
.Nm writev ,
.Nm pwrite
.Nd 出力の書込み
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <sys/uio.h>
@ -59,7 +61,7 @@
.Fa nbytes
のデータを書込もうとします。
.Fn writev
は同じアクションを実行しますが、iov[0], iov[1], ..., iov[iovcnt-1] という
は同様の動作をしますが、iov[0], iov[1], ..., iov[iovcnt-1] という
.Fa iov
配列のメンバが指定する
.Fa iovcnt
@ -75,14 +77,14 @@
.Pp
.Bd -literal -offset indent -compact
struct iovec {
char *iov_base; /* Base address. */
size_t iov_len; /* Length. */
char *iov_base; /* ベースアドレス */
size_t iov_len; /* 長さ */
};
.Ed
.Pp
.Fa iovec
エントリは、データを書込むメモリのベースアドレスと領域の長さを指定します。
エントリは、書込むデータがあるメモリのベースアドレスと領域の長さを指定します。
.Fn writev
は、常に領域全体を書込んでから次に進みます。
.Pp
@ -225,6 +227,8 @@ struct iovec {
配列
.Fa iov_len
値の合計が、32 ビット整数をオーバフローしました。
.It Bq Er ENOBUFS
ソケットに書き出している時に mbuf のプールを使い尽くしました。
.El
.Pp
.Fn pwrite