【发布时间】:2016-09-19 09:45:32
【问题描述】:
昨天,我有一个面试,我被问到这个代码 sn-p using fork() 的问题。
void main()
{............
for (int k=1;k<=10;k++)
{
pid[k]=fork();
if(!pid[k])
execvp(.....);
}
}
根据我的理解,我告诉总共有 1024 个进程,包括父进程 2^n -1 = 1023 + 1 个父进程,其中 n = 总叉数
但是,面试官回答说我的回答是错误的。
我的理解有什么问题?
【问题讨论】:
-
execvp 执行的程序是同一个程序,还是不相关的程序?了解您为什么认为 1024 是正确答案也可能会有所帮助(即解释您的推理)
-
我认为孩子被不同的程序取代了。?
-
好吧,在这种情况下,子进程不会参与进一步的分叉,这将导致 10 个子进程和 1 个父进程,不是吗?另外,2^10-1 绝对不是 1024...
-
请将其作为答案发布。
标签: operating-system fork