作者gn00618777 (123)
看板Grad-ProbAsk
标题Re: [理工] [os]-fork()程式
时间Fri Feb 12 00:15:28 2010
※ 引述《gn00618777 (123)》之铭言:
: 98年中央资工
: #include<sys/types.h>
: #include<stdio.h>
: #include<unistd.h>
: int value=10;
: int main()
: {
: pid_t pid;
: pid=fork();
: if(pid==0){
: value+=15;
: }
: else if(pid>0){
: wait(NULL);
: printf("PARENT:value=%d",value); /*LINE A*/
: exit(0);
: }
: }
:
@@这题我是觉得奇怪
父亲那边有wait表示要等子完成,可是父亲等子完成,要是儿子做完了一定要回传一个
值给父亲他才知道儿子做完了他父亲才可继续做阿...
我记得洪x也有讲过儿子如果执行exclp()的话,他里面有内建的exit会回传给父亲
好让他知道儿子做完了,但这题他只是一般的执行,儿子程式後面没有写exit(0)
那这样父亲不就不知道儿子到底做完了没有..所以应该父亲会卡在wait(NULL)那边阿
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.138.109.190
1F:推 kkman0120:就当作他会传吧 不然这样讲的话题目这样出不就没结果了 02/12 00:30
2F:→ gn00618777:那我这样说合理吗? 02/12 00:33
3F:→ gn00618777:还有fork之後父与子的code section是不是一样? 02/12 01:18
4F:→ gn00618777:所以子和父所看到的所有程式码都一样包括上面的include 02/12 01:19
5F:→ gn00618777:只是data section不同? 这是我看讲义的想法 02/12 01:19
6F:→ gn00618777:请问是正确的吗? 02/12 01:19
7F:推 ie925155:如果父亲等儿子的话就表示儿子做父亲的事 所以code 02/12 01:51
8F:→ ie925155:section 是一样的 02/12 01:51
9F:→ ie925155:虽然你推论的有道理但是考试还是会假设有传吧... 02/12 01:52
10F:→ ie925155:还有疑虑的话写出来给教授看你的疑虑分两个写阿 02/12 01:52
11F:→ gn00618777:喔喔 ~~ 02/12 11:42