vfork()システムコールを使用して作成された新しいプロセスが親のアドレス空間でスレッドとして実行され、子スレッドがexit()またはexec()システムコールを呼び出さなくなるまで、親がブロックされることを読みました。そこで、vfork()システムコールを使用してプログラムを作成しました
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid;
printf("Parent\n");
pid = vfork();
if(pid==0)
{
printf("Child\n");
}
return 0;
}
次のような出力が得られました。
Parent
Child
Parent
Child
Parent
Child
....
....
....
returnステートメントはexit()システム呼び出しを内部的に呼び出す必要があると想定していたので、出力は次のようにのみ期待していました。
Parent
Child
なぜ実際にそれが停止せず、無限ループで継続的に印刷されないのか、誰かが私に説明できますか?