gpt4 book ai didi

c - Fork 问题 - 执行 fork() 后,fork 之前的命令也运行两次

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:08 34 4
gpt4 key购买 nike

这是输出---

家长:我的pid是4525 parent :我 parent 的 pid 是 3350 parent 开始- 4525 3350 fork 前 fork 前 child 4526 4525在 parent ---父端---

当我尝试执行以下代码时 ---

void main(int argc, char *argv[])
{
int status;
pid_t my_pid, parent_pid,child_pid;

my_pid = getpid();
parent_pid = getppid();
printf("\nParent: my pid is %d", my_pid);
printf("\nParent: my parent's pid is %d", parent_pid);
printf("\nparant started- %d %d",my_pid,parent_pid);
printf("\nBefore Fork");

if((child_pid = fork()) < 0 )
{
perror("fork failure");
exit(1);
}

if(child_pid == 0)
{
printf("\n Child %d %d\n",getpid(),getppid());

}
else
{
printf("\nIn parent");
wait(&status);
printf("\n---Parent End---\n");
}

}

为什么 Before Fork 打印了两次??谢谢

最佳答案

这是因为您没有在 fork() 之前刷新输出缓冲区。更改为:

printf("\nBefore Fork\n");

或:

printf("\nBefore Fork");
fflush(stdout);

关于c - Fork 问题 - 执行 fork() 后,fork 之前的命令也运行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25956022/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com