HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > f > fork - システムコールの説明

fork - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. エラー
  6. 準拠
  7. 関連項目

名前

fork - 子プロセスを生成する

書式

#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);

説明

fork ()は親プロセスと PID (プロセス ID)、および PPID (親プロセス ID) だけが 異なる子プロセスを生成する。 この時、資源利用量は 0 に設定される。 ファイルロックと保留しているシグナルは引き継がれない。

Linux では、 fork ()を 書き込み時コピー (copy-on-write)・ページを用いて実装している。 したがって、fork を行うことの唯一のデメリットは、 親プロセスのページ・テーブルを複製と 子プロセス自身のタスク構造の作成のための時間とメモリが必要なことである。

返り値

成功した場合、親の実行スレッドには子プロセスの PID が返され、 子の実行スレッドには 0 が返される。 失敗した場合、親プロセスに -1 を返し、子プロセスは生成されない。 また、 errno が適切に設定される。

エラー

EAGAIN
親プロセスのページ・テーブルのコピーと 子プロセスのタスク構造に生成に必要なメモリを fork ()が割り当てることができなかった。
EAGAIN
呼び出し元の RLIMIT_NPROC 資源の制限 (resource limit) に達したために、新しいプロセスを生成できなかった。 この制限を超えるには、プロセスは CAP_SYS_ADMIN または CAP_SYS_RESOURCE ケーパビリティ (capability) を持たなくてはならない。
ENOMEM
メモリが足りないために、 fork ()は必要なカーネル構造体を割り当てることができなかった。

準拠

SVr4, 4.3BSD, POSIX.1-2001.

  pipe (2) および   wait (2) を参照。

関連項目

  clone (2),   execve (2),  setrlimit (2), unshare (2),  vfork (2),   wait (2),   capabilities (7) 

Linux Tips 関連記事
Linux Tips(目次)
Linux ディストリビューション一覧
rpm のファイル名にあるi386とかi686とは
自分のマシンの情報を調べる
cron の設定
ssh の root ログインを禁止する
ssh を、ユーザ、IPでアクセス制限
鍵交換方式によるssh接続
鍵交換方式によるssh接続( windowsから )
複数ファイル内の文字列を置換して上書き保存する
あるグループをイニシャルグループとするユーザー一覧出力
複数ファイルのファイル名を一括変換する
連番ファイルをコマンド一発で作成する
中身がランダムなファイルを任意のサイズで作成する
Linux ユーザーアカウントをロック・アンロックする