C语言里,main 函数中 return x和 exit(x) 到底有什么区别 ?

最近读 APUE,APUE 7.3 节中说,main 函数 return 相当于
exit(main(argc, argv))
但是在实践程序 8-2 时候出现了问题。

#include <stdio.h> #include <stdlib.h> #include <unistd.h> int glob = 6; int main(void) { int var; pid_t pid; var = 88; printf("before vfork\n"); if ((pid = vfork()) < 0) { printf("vfork error"); exit(-1); } else if (pid == 0) { /* 子进程 */ glob++; var++; return 0; //exit(0); } printf("pid=%d, glob=%d, var=%d\n", getpid(), glob, var); return 0; //exit(0); } … 显示全部
默认排序 按时间排序

13 个回答

陈皓 酷壳:coolshell.cn/ (芝兰生于…
孙建希 软件工程师
啊鱼 c/java/android
vczh 专业造轮子,拉黑抢前排。…
呵呵一笑百媚生 按在光滑的地上摩擦
SCrip 业余IT
匿名用户
ivan lam 从事Linux kernel设计和开发,对架构、设…

加入知乎

与世界分享你的知识、经验和见解

验证码
已有帐号?
618 人关注该问题