Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fork(2) — NEWS-os 4.1C

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.1C

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