码迷,mamicode.com
首页 > 其他好文 > 详细

系统调用vfork()

时间:2015-12-25 23:37:28      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

vfork()学习

vfork()与fork()的一个重要区别, 等待子进程退出后, 父进程才会执行.

 1 #include <stdio.h>
 2 #include <sys/types.h>
 3 #include <unistd.h>
 4 
 5 int globVar = 5;
 6 
 7 int main(void)
 8 {
 9     pid_t  pid;
10     int    var = 1, i;
11     
12     printf("fork is diffirent with vfrok \n");
13 
14     pid = vfork();
15     
16     switch(pid) {
17         case 0:
18             i = 3;
19             while(i-- > 0)
20             {
21                 printf("Child process is running\n");
22                 
23                 globVar++;
24                 var++;
25                 
26                 sleep(1);
27             }
28             printf("Child‘s globVar = %d,var = %d, pid = %d\n",globVar,var,getpid());
29             break;
30         case -1:
31             perror("Process creation failed\n");
32             exit(0);
33         default:
34             i = 5;
35             while(i-- > 0)
36             {
37                 printf("Parent process is running\n");
38                 
39                 globVar++;
40                 var++;        
41                 
42                 sleep(1);
43             }
44             printf("Parent‘s globVar = %d ,var = %d, pid = %d\n", globVar ,var,getpid());
45             exit(0);
46     }
47 }

编译/链接/运行结果如下:

技术分享

父进程会等待子进程执行, 完成退出后, 父进程才会执行.

系统调用vfork()

标签:

原文地址:http://www.cnblogs.com/zhanglong71/p/5074500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!