转载时请注明出处:http://blog.csdn.net/johndiyang/
exit(0) //正常退出当前进程
fork() //之后的语句,子进程和父进程同时运行。但是在子进程中fork返回0,在父进程中fork返回大于1的进程ID。也就是说,你定义的I在父进程和子进程中有不同的值。
if(fork()==0){//这个判断,子父进程都有,但是在父进程中fork()的返回值大于0,所以父不会执行这段程序,fork()在子进程中返回0,子进程会执行该程序块。经常会在该程序块中使用exit(0),这个语句使子进程退出执行。如果没有该语句,这个程序块后面的程序都将被父进程和子进程执行}
通过一个小例子分析fork的工作原理。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)