作者lionccc (菠菜粗粗窝)
看板Grad-ProbAsk
标题[理工] [作业系统]fork 问题
时间Tue Jan 29 18:37:09 2019
在看洪逸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()那个区块就不会做了,不是吗?)
麻烦了 谢谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.52.101.134
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1548758231.A.0EC.html
※ 编辑: lionccc (27.52.101.134), 01/29/2019 18:37:55
1F:推 sooge: fork建立成功後 OS会送i=0给child 送i>0的一个数字给parent01/29 18:54
2F:推 sooge: 所以那行else就是parent在做的事01/29 18:58
※ 编辑: lionccc (27.52.101.134), 01/29/2019 19:07:02
3F:推 sooge: 和child无关 不知道有没有回答到你 你很像把else和else if 01/29 19:07
4F:→ sooge: 以为是二择一,其实是child和parent各自的程式码 01/29 19:07
5F:→ lionccc: 嗯嗯我把它搞成2择1了QQ 这样我懂了!!谢谢S大 01/29 19:11
6F:推 maple205: 借问,如果题目问创了几个process 01/29 19:23
7F:→ maple205: 要把main算进去吗? 01/29 19:24
8F:推 blueskier: 看题目怎麽问,如果单纯是问创了几个就不用算进去 01/29 19:28
9F:推 sdfg014025xx: 选择题看题目 非选可以自己假设 01/29 19:36
10F:推 imadog: 洪逸好像都会算欸 我记得他都算total 01/29 21:07
11F:→ imadog: 如果问法是how many process are created 要算main吗? 01/29 21:09
12F:→ rockieloser: 要吧 如果是new才不算? 01/29 21:11
13F:推 Leaving: 交大99OS有一题有算(答案是729的那题) 01/29 21:16