Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fork(2) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

execve(2)

wait(2)

FORK(2)  —  NEWS-OS Programmer’s Manual

名称

fork − 新しいプロセスを 作成する

形式

pid = fork()
int pid;

解説

fork を 実行すると、 新しいプロセスが作成されます。 その新しいプロセス (子プロセス) は、 次の点を 除き、 呼び出し元のプロセスのコピーになります。

子プロセスは、 一意なプロセス ID を 持ちます。 子プロセスは、 異なる親プロセス ID (すなわち、 その親のプロセス ID) を 持ちます。 子プロセスは、 その親のディスクリプタの自分用のコピーを 持ちます。 これらのディスクリプタは、 同一オブジェクトを 参照します。 したがって、 例えば、 ファイル内のファイルポインタが子と親との間で共有され、 そのために、 子プロセス内のディスクリプタに対する lseek(2) は、 それ以降の親による read または write に影響を 及ぼすこともあります。 このディスクリプタのコピー処理は、 新しく作成されたプロセス用に標準入力と標準出力を 確立するため、 またはパイプを セットアップするために、 シェルによっても用いられます。 子プロセスのリソースの消費量は 0 にセットされます。 setrlimit(2) を 参照してください。

リターン値

正常終了時、 fork は、 子プロセスへ値 0 を返し、 子プロセスのプロセス ID を 親プロセスへ返します。 失敗した場合には、 値 −1 を 呼び出し元プロセスへ返し、 その子プロセスは作成されず、 グローバル変数 errno がそのエラーを 示すようにセットされます。

エラー

次の項目のうちの 1 つまたは複数が真である場合には、 fork は失敗し、 子プロセスは作成されません。

[EAGAIN] 実行プロセスの総数がシステムの制限値を オーバーする。 この制限値はカーネルのコンフィグレーションに依存します。

[EAGAIN] 1 人のユーザについての実行中プロセスの総数に対するシステム制限値 MAXUPRC (<sys/param.h>) をオーバーする。

[ENOMEM] 新しいプロセスのための十分なスワップスペースがない。

関連事項

execve(2), wait(2)

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026