#include <unistd.h>
#include <stdio.h>
int main(void)
{
int i=0;
for(i=0;i<3;i++){
pid_t fpid=fork();
if(fpid==0)
printf("son/n");
else
printf("father/n");
}
return 0;
}
这运行结果是怎么样的,为什么会有不同的答案,能画下他的树形图让我更好理解下嘛
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
补充楼上一点,子进程将复制父进程的内存空间,继承描述符。所以子进程的printf也可以输出到当前终端。
因为是多进程,所以输出结果并不是固定的。
fork能夠返回兩次,它可能有三種不同的返回值:
在父進程中,fork返回新創建子進程的進程ID;
在子進程中,fork返回0
如果出現錯誤,fork返回一個負值;
也就是说,执行pid_t fpid=fork();成功会有两个進程:父跟子进程。
有不同的答案取决于OS调度器让那个进程先跑。