linux-kernel
フォークシステムコール
サーチ…
fork()システムコール
fork()
はシステムコールです。 forkは、親プロセス( fork()
を実行したプロセス)のレプリカである、実行中のプロセスから子プロセスを作成するために使用されます。子プロセスは親プロセスから導出されます。親と子の両方が異なるアドレス空間を持ち、それぞれが変数に加えられた変更とは独立しています。
子プロセスには独自のPID(プロセスID)があります。子プロセスのPPID(親プロセスID)は、親プロセスのPIDと同じです。
フォーマット:
ヘッダーファイル:
#include <unistd.h>
関数宣言:pid_t fork(void);
fork()は入力引数を必要としません。
子プロセスの作成が成功すると、子プロセスのPIDは親プロセスに返され、子プロセスには0が返されます。失敗の場合は、プロセスが作成されていない-1
を返します。
使用例:
#include <stdio.h>
#include <unistd.h>
void child_process();
void parent_process();
int main()
{
pid_t pid;
pid=fork();
if(pid==0)
child_process();
else
parent_process();
return 0;
}
/*getpid() will return the Pid of the
current process executing the function */
void child_process()
{
printf("Child process with PID : %d and PPID : %d ", getpid(),getppid());
}
void parent_process()
{
printf("Parent process with PID : %d", getpid());
}
子と親からのprintf
ステートメントのシーケンスは、システムに依存するスケジューリング・メカニズムに依存します。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow