tail head cat sleep
QR code linking to this page

manページ  — FORK

名称

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

内容

ライブラリ

Standard C Library (libc, -lc)

書式

#include <sys/types.h>
#include <unistd.h>

pid_t
fork(void);

解説

fork() システムコールによって新しいプロセスの作成が行われます。 新しいプロセス (子プロセス)は、 以下の項目を除いた呼び出しプロセス (親プロセス) の正確なコピーです。

戻り値

正常に完了した場合、 fork() は、子プロセスに値 0 を返し、子プロセスのプロセス ID を親プロセスに返します。 そうでない場合は -1 が親プロセスに返され、子プロセスは作成されずに、 エラーを示すためにグローバル変数 errno が設定されます。

エラー

次の場合に fork() システムコールは処理に失敗し、子プロセスは作成されません:
[EAGAIN]
  実行中のプロセスの合計数がシステムの限界を超えます。 限界値は sysctl(3) の MIB 変数の KERN_MAXPROC によって指定されます (スーパユーザを除いて、 実際には限界はこれより 10 個少なくなります)。
[EAGAIN]
  ユーザがスーパユーザでなく、 1 人のユーザによって実行中のプロセスの合計数が、システムの限界を越えます。 限界は sysctl(3) の MIB 変数の KERN_MAXPROCPERUID によって指定されます。
[EAGAIN]
  ユーザがスーパユーザでなく、 resource 引数の RLIMIT_NPROC に対応するソフトリソース限界を越えます (getrlimit(2) を参照)。
[ENOMEM]
  新しいプロセス用のスワップ空間が不充分です。

関連項目

execve(2), rfork(2), setitimer(2), setrlimit(2), vfork(2), wait(2)

歴史

fork() 関数は AT&T v6 で登場しました。

FORK (2) June 4, 1993

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

UNIX has been evolving feverishly for close to 30 years, sort of like bacteria in a cesspool — only not as attractive
— John Levine, "Unix for Dummies"