[理工] [作业系统]fork 问题

楼主: lionccc (菠菜粗粗窝)   2019-01-29 18:37:09
在看洪逸fork的第一个例子就卡住了......
void main()
{
int i ;
i = fork();
if(i < 0)
{
printf("fork failed")
exit(-1)
}
else if (i == 0) //child
{
execlp("......")
}
else // parent
{
wait()
printf("child complete")
exit(0)
}
}
想请问
fork如果成功,系统回传0之后,
child process执行完那个命令以后,系统还会再回传大于0的值?
如果是的话,想问程式跑的流程是如何
(我的想法是:他i只有一个值,假设他就是等于0了,只会执行那个命令,然后下面wa
it()那个区块就不会做了,不是吗?)
麻烦了 谢谢各位
作者: sooge (老衲)   2019-01-29 18:54:00
fork建立成功后 OS会送i=0给child 送i>0的一个数字给parent所以那行else就是parent在做的事和child无关 不知道有没有回答到你 你很像把else和else if以为是二择一,其实是child和parent各自的程式码
楼主: lionccc (菠菜粗粗窝)   2019-01-29 19:11:00
嗯嗯我把它搞成2择1了QQ 这样我懂了!!谢谢S大
作者: maple205 (艾瑞克)   2019-01-29 19:23:00
借问,如果题目问创了几个process要把main算进去吗?
作者: blueskier (blue)   2019-01-29 19:28:00
看题目怎么问,如果单纯是问创了几个就不用算进去
作者: sdfg014025xx (随便就好)   2019-01-29 19:36:00
选择题看题目 非选可以自己假设
作者: imadog (凹呜)   2019-01-29 21:07:00
洪逸好像都会算欸 我记得他都算total如果问法是how many process are created 要算main吗?
作者: rockieloser (友善大队长)   2019-01-29 21:11:00
要吧 如果是new才不算?
作者: Leaving   2019-01-29 21:16:00
交大99OS有一题有算(答案是729的那题)

Links booklink

Contact Us: admin [ a t ] ucptt.com