日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
RFORK(2) FreeBSD システムコールマニュアル RFORK(2) 名称 rfork -- プロセスのリソースを操作する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <unistd.h> pid_t rfork(int flags); 解説 fork, vfork または rfork することは、新しいプロセスが作成される、唯一の方 法です。rfork() への flags 引数は、呼び出されているプロセス (親) のリソー スが新しいプロセス (子) によって共有されるか、またはそれらのデフォルト値 に初期化されるかを選択します。リソースは、(共有されるとき、他のプロセスの ためにオープンしてクローズするプロセスを許可する) オープンされているファ イル記述子テーブルとオープンしているファイルを含みます。flags 引数は、次 のいくつかのサブセットの論理和 (OR) です: RFPROC 設定されているなら、新しいプロセスが作成されます。そうでなけ れば、変更は、現在のプロセスに影響します。 RFNOWAIT 設定されるなら、子プロセスは、親プロセスから分離されます。終 了時に、子プロセスは、親プロセスが集める状態を残しません。 wait(2) を参照してください。 RFFDG 設定されるなら、呼び出し側のファイル記述子テーブル (intro(2) を参照) がコピーされます。そうでなければ、2 つのプロセスは、 単一のテーブルを共有します。 RFCFDG 設定されるなら、新しいプロセスは、クリーンなファイル記述子 テーブルで開始します。RFFDG と相互に排他的です。 RFTHREAD 設定されるなら、新しいプロセスは、親と共にリーダテーブルを処 理するためにファイル記述子を共有します。RFFDG も RFCFDG も設 定されていないときだけ適用します。 RFMEM 設定されるなら、カーネルは、通常、ハードウェアページテーブル を直接共有することによって、全体のアドレス空間の共有を強制し ます。したがって、子プロセスは、通常、それらが通常共有可能で あるかどうかにかかわらず、親プロセスが所有しているすべてのセ グメントを継承して、共有します。スタックセグメントは、(親と 子の両方は、同じスタックに返り) 分割されず、したがって、 RFMEM フラグがある rfork() は、一般的に、C を含むハイレベル 言語から直接呼び出されません。RFPROC でのみ設定されます。ヘ ルパ関数は、この問題を補助するために提供され、新しいプロセス は、提供されたスタックで実効されます。情報については、 rfork_thread(3) を参照してください。多くのコードは、そのよう な環境で正確に実行しないことに注意してください。 RFSIGSHARE 設定されるなら、カーネルは、子プロセスと親プロセスの間で sigacts 構造体を強制的に共有します。 RFTSIGZMB 設定されるなら、カーネルは、デフォルトの SIGCHLD の代わりに 子供の終了時に指定されたシグナルを親に配信します。シグナル番 号 signum は、RFTSIGFLAGS(signum) 表現を flags に oring する ことによって指定されます。訳注: oring は、何か動詞のスペルミ スと思われます。シグナル番号 0 を指定すると、子供の終了時の シグナルの配信を無効にします。 RFLINUXTHPN 設定されるなら、カーネルは、子プロセスのためのスレッドの終了 時に、SIGCHLD の代わりに SIGUSR1 を配信します。これは、特定 の Linux クローンの振る舞いを模倣することを目的としていま す。 共有されたファイル記述子テーブルのファイル記述子は、それらが、明示的にク ローズされるか、またはテーブルを共有しているすべてのプロセスが終了するま で、オープンしたままとされます。 RFPROC が設定されるなら、親プロセスで返される値は、子プロセスのプロセス ID です。子プロセスで返される値は、0 です。RFPROC なしで、返り値は、0 で す。プロセス ID の範囲は、1 から最大の整数 (int) 値です。rfork() システム コールは、必要であるなら、要求されたプロセスリソースが利用可能となるま で、スリープします。 fork() システムコールは、rfork(RFFDG | RFPROC) への呼び出しとして実装する ことができますが、後方互換性のためではありません。 戻り値 成功して完了すると、rfork() は、子プロセスに 0 の値を返し、子プロセスのプ ロセス ID を親プロセスに返します。そうでなければ、-1 の値が親プロセスに返 され、子プロセスは、作成されません、グローバル変数 errno は、エラーを示す 値に設定されます。 エラー rfork() システムコールは、次の場合に失敗し、子プロセスは、作成されません: [EAGAIN] 実行しているプロセスの合計数がシステムに課された制限を 越えています。制限は、sysctl(3) MIB 変数 KERN_MAXPROC によって与えられます。(制限は、実際、スーパユーザを除 いて、これより 10 少なくなります)。 [EAGAIN] ユーザが、スーパユーザではなく、システムに課された制限 が、シングルユーザによって実行しているプロセスの合計数 を越えています。制限は、sysctl(3) MIB 変数 KERN_MAXPROCPERUID によって与えられます。 [EAGAIN] ユーザが、スーパユーザではなく、resource 引数 RLIMIT_NOFILE に対応しているソフトリソース制限を越えて います (getrlimit(2) を参照)。 [EINVAL] RFFDG と RFCFDG フラグの両方が指定されました。 [EINVAL] 上記にリストされなかったいずれかのフラグが指定されまし た。 [EINVAL] 無効のシグナル番号が指定されました。 [ENOMEM] 新しいプロセスのための十分なスワップ空間がありません。 関連項目 fork(2), intro(2), minherit(2), vfork(2), pthread_create(3), rfork_thread(3) 歴史 rfork() 関数は、Plan9 ではじめて登場しました。 FreeBSD 11.2 July 12, 2011 FreeBSD 11.2