次のコードを実行すると
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = vfork();
printf("hello world\n");
}
Output:
hello world
hello world
hello world
Segmentation fault
exec() または _exit() が呼び出されない限り、変数を変更しようとすると vfork() が奇妙な動作をする可能性があることは知っていますが、正確に何が起こっているのか誰か説明してもらえますか?? hello world が 3 回印刷されるのはなぜですか? printf() がバッファリングされているためですか?そして最後に、親が戻ろうとしているときにセグフォルトが発生するのはなぜですか?