サーチ…


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