質問: fork(); std::cout<<"ID1:"<
回答: fork()システムコールを呼び出すと、呼び出し元プロセスをコピーしたプロセスが新たに作られて結果的に2つの全く同じプロセスが存在することになります。 その2つのプロセスはどちらもfork()システムコール呼び出し後から処理を続行することになります。 さきほど「全く同じプロセス」と言いましたが1点だけ違いがあり、fork()システムコールの戻り値だけが違います。 fork()から0以外の数値が返ってきたプロセスは親プロセスで、その数値は子プロセスのPIDを表します。 fork()から0が返ってきたプロセスは子プロセスです。 全く同じ2つのプロセスはこの戻り値によってそれぞれの役割を認識し、以降の処理を分けるようにコーディングされています(またはそうなるようにコーディングします)。 普通は戻り値を判定することによって分岐させます。 ``` pid = fork(); if ( pid < 0 ) { /* fork()に失敗した場合のエラー処理など */ } else if ( pid == 0 ) { /* 子プロセスの処理 */ } else { /* 親プロセスの処理 */ } ```