首页 > 其他 > 详细

vfork 为何挂掉

时间:2015-03-04 23:55:25      阅读:262      评论:0      收藏:0      [点我收藏+]

 

在知乎上,有个人问了这样的一个问题——为什么vfork的子进程里用return,整个程序会挂掉,而且exit()不会?并给出了如下的代码,下面的代码一运行就挂掉了,但如果把子进程的return改成exit(0)就没事。

我受邀后本来不想回答这个问题的,因为这个问题明显就是RTFM的事,后来,发现这个问题放在那里好长时间,而挂在下面的几个答案又跑偏得比较严重,我觉得可能有些朋友看到那样的答案会被误导,所以就上去回答了一下这个问题。

下面我把问题和我的回答发布在这里,也供更多的人查看。

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

int main(void) {

int var;

var = 88;

if ((pid = vfork()) < 0) {

printf("vfork error");

exit(-1);

} else if (pid == 0) { /* 子进程 */

var++;

return 0;

}

printf("pid=%d, glob=%d, var=%d\n", getpid(), glob, var);

return 0;

}



参见:

http://www.guokr.com/blog/806477/

http://www.guokr.com/blog/806478/

http://www.doc88.com/p-1408571371043.html

 

vfork 为何挂掉

原文:http://www.cnblogs.com/python001/p/4314562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!