永发信息网

运用fork函数产生的结果不太理解,求解释

答案:2  悬赏:10  手机版
解决时间 2021-02-06 03:46
=0)&&(strcmp(argv[1],"vfork"!=0)) usage(argv[0]); if((strcmp(argv[1]; } else { a=1; printf(" printf(",char**argv) { int a;/文件名为run #include ),a); exit(0); } } else { printf(" printf("In child process ,chage a to %d\n",":run fork 运行结果: In father process,a=0 you chosed FORK IN child process,chage a to 1 In father process,a=0 you chosed FORK In father process,",a); exit(0); } else { wait(NULL);fork" void usage(char*name) { printf("Usage: %s fork /vfork\n" if(mode==0) { printf("you chosed FORK\fork"))==0) mode=0; else mode=1;n"; #include #include <,a=%d\n"n";n",a); if(fork()==0) { a=1; printf(",a=0 问题;IN child process,chage a to %d \unistd.h> exit(0);n"); } if(vfork()==0) { a=1;,a);,name); exit(1); } int main(int argc,a); exit(0); } } shell运行; int mode; if(argc!=2) usage(argv[0]); if((strcmp(argv[1]; a=0;);In father process;You choosed VFORK\/
最佳答案
1.因为fork会复制父进程的整个内存空间
2.prinf不是实时的输出到屏幕上,而是先输出到缓冲区中
所以fork复制的时候,会把父进程缓冲区中的“you chosed FORK In father process,a=0”也复制进去

要避免这个情况的话,只需要在
if(fork()==0)之前加上一句

fflush(stdout);
把缓冲区清空就可以了
全部回答
去 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
洁美干洗中心(民主街)地址在哪,我要去那里办
如何洞察主力在吸筹还是出仓,从哪些方面着手
在上下班途中死亡是否算工伤
大娘子的意思是什么啊?知道的请说下!
安塞县楼坪林场地址在什么地方,想过去办事
手机能不能玩七日杀
洁美洗衣店(解放街道福泰家园2号楼门口洁美洗
做甲胶油指甲必须要光疗机吗?不用光疗机可以
男性,57岁,慢性肾炎病史,水肿明显,血压16
株洲县农业局地址在哪,我要去那里办事
2018年1月3号11点8分出生男宝五行缺什么
宝镂的意思是什么啊?知道的请说下!
下午的尿液放一段时间有好多沉淀物是因为什么
山东邹平南关建筑公司我想知道这个在什么地方
如何用WORD2003制作一份小学数学试卷1、如何
推荐资讯
荫补的意思是什么啊?知道的请说下!
荣威350 2015款和吉利新帝豪三厢 2015款哪个
小猫感冒了怎么办,吃什么药能治好
偶最近是在论坛上面看到乱世王者手游的,请问
判断题小红和小颍比赛跳绳,小红2分钟跳了190
吉林到青岛多远
我19岁,母亲160,父亲182,我才178,能不能
草荐沟路/商郧路(路口)地址在哪,我要去那里
下列属于相对性状的是A. 豌豆的紫花和白花B.
【merry me】英文merryme翻译成中文的意思
世纪华联(盐新店)怎么去啊,我要去那办事
同学的话怎么写
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?