【发布时间】:2023-01-19 02:16:00
【问题描述】:
我知道子进程将返回 0,而父进程将返回子进程的 PID 值。但是,如果调用多个 fork() 函数,子进程(或分叉 >= 2 次的进程)的子进程的返回值是多少?例如在:
int main()
{
Fork();
Fork();
printf("hello\n");
exit(0);
}
fork() 被调用了两次,因此子进程也将继续分叉。那么对此,从子进程中fork出来的进程会不会全部归0呢?任何帮助将不胜感激。
【问题讨论】:
-
您是否考虑过实际捕获返回值并将其打印出来?这将快速回答您的问题。
-
另外,这里是
C,区分大小写;Fork与fork不同。 -
如果您在进程 P 中调用
fork(),它会在 P 中返回新子进程的 PID,并在 P 的新子进程中返回 0。P 有多少个父进程并不重要,如果您同时执行了一个新程序,或者只是在没有它的情况下分叉了多次。