コードで子プロセスを作成しています。fork()を呼び出すと、子プロセスは次のステートメントから実行を開始する必要がありますが、私のコードでは、子プロセスはfork呼び出しの前にステートメントを実行します。
#include<stdio.h>
int main()
{
int pid;
FILE *fp;
fp = fopen("oh.txt","w");
fprintf(fp,"i am before fork\n");
pid = fork();
if(pid == 0)
{
fprintf(fp,"i am inside child block\n");
}
else{
fprintf(fp,"i inside parent block\n");
}
fprintf(fp,"i am inside the common block to both parent and child\n");
fclose(fp);
return 0;
}
これは私が得る出力です
出力:
i am before fork
i inside parent block
i am inside the common block to both parent and child
i am before fork
i am inside child block
i am inside the common block to both parent and child
「iambeforefork」という行は、ファイルに1回書き込む必要がありますが、子と親によって2回書き込まれます。なぜそうなのですか?
ありがとうございました。