作者oklp1415 (天生我材)
看板LinuxDev
标题[问题] 系统程式的问题
时间Wed Apr 2 15:48:09 2014
void main() {
int td = 0;
fork();
for ( int j = 0; j < 4; j++) {
printf(" j = %d\n", j);
fflush(stdout);
td += j;
}
printf("td = %d\n", td);
exit(0);
}
请益一下这样程式跑出来是会列出两次资讯??
j=0
j=1
j=2
j=3
sum=6 同时印出两次??
不知道跟fflush(stdout); 会不会有影响??
fflush不是清空buffer内的资料吗?? 那他还会再输出里面的资讯??
-------------------------------------------
印一次
printf("hello\n");
//fflush(stdout);
fork();
印两次
printf("hello\n");
fflush(stdout);
fork();
----------------------------------------------
但是这两个 输出的结果却是不一样
有请高手解析困惑点,感谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.39.12.135
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1396424892.A.C1C.html
1F:→ Viller:看不太懂你的问题是什麽,不过'\n'就会flush buffer了, 04/03 12:22
2F:→ Viller:fflush应该只是清空buffer内的资料,你的印两次应该是fork 04/03 12:24
3F:→ Viller:造成的, 不是fflush引起的 04/03 12:24
我想问的是这段程式void main() 会执行几次??
下面的部分我只是参考来做比较?? 不知道上面的程式执行结果会是如何??
※ 编辑: oklp1415 (114.27.124.145), 04/03/2014 14:54:57
4F:推 PTTco:fork出去,所以parent process和child process各会执行一次 04/03 16:29
6F:→ Viller:所以上面的程式会列印出两次 04/03 23:29