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 }

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

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

转载于:https://www.cnblogs.com/zhanglong71/p/5074500.html

vfork()系统调用相关推荐

  1. 【Linux 内核】进程管理 ( 进程相关系统调用源码分析 | fork() 源码 | vfork() 源码 | clone() 源码 | _do_fork() 源码 | do_fork() 源码 )

    文章目录 一.fork 系统调用源码 二.vfork 系统调用源码 三.clone 系统调用源码 四._do_fork 函数源码 五.do_fork 函数源码 Linux 进程相关 " 系统 ...

  2. 【Linux 内核】进程管理 ( 系统调用简介 | 进程相关系统调用源码 )

    文章目录 一.系统调用简介 二.进程相关系统调用源码 一.系统调用简介 在开发应用程序时 , 进行 " 进程创建 " , 调用的 fork() , vfork() , clone( ...

  3. OS / Linux / clone、fork、vfork 与 pthread_create 创建线程有何不同

    进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽象成各种数据对象:进程控制块.虚存空间.文件系统,文件I/O.信号处理函数.所以创建一个进程的过程就是这些数 ...

  4. linux内核-系统调用execve()

    读者在linux内核-系统调用fork.vfork与clone中已经看到,进程通常是按其父进程的原样复制出来的,在多数情况下,如果复制出来的子进程不能与父进程分道扬镳,走自己的路,那就没多大意义.所以 ...

  5. linux 进程 系统调用,linux进程与系统调用

    进程管理 linux系统的实现非常特别:他对线程和进程并不特别区分.对linux而言,线程只不过是一种特殊的进程罢了. 现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存.虽然实际上可能是许多 ...

  6. fork()和vfork()

    Hello,今天Val和大家分享操作系统中关于进程创建有关的内容. 一.进程创建背景知识 1.传统Unix操作系统统一对待所有进程: 子进程拷贝父进程所拥有的所有资源,这种方法创建慢且效率低,因为子进 ...

  7. Linux系统编程(vfork和fork)

    文章目录 前言 一.vfork讲解 二.vfork使用 三.exit和_exit 1.exit和_exit对比 2.在vfork中的使用 四.vfork和fork区别 总结 前言 本篇文章讲解vfor ...

  8. Linux 创建子进程执行任务

    Linux 操作系统紧紧依赖进程创建来满足用户的需求.例如,只要用户输入一条命令,shell 进程就创建一个新进程,新进程运行 shell 的另一个拷贝并执行用户输入的命令.Linux 系统中通过 f ...

  9. [转载]Linux 线程实现机制分析

    自从多线程编程的概念出现在 Linux 中以来,Linux 多线应用的发展总是与两个问题脱不开干系:兼容性.效率.本文从线程模型入手,通过分析目前 Linux 平台上最流行的 LinuxThreads ...

最新文章

  1. 如何让Android对话框全屏 Dialog 全屏
  2. 从 25 倍稀释下的蘑菇街期权说起
  3. Spring MVC入门示例教程--静态页面跳转
  4. VS2008 SP1补丁
  5. Java并发包--线程池框架
  6. 真随机和伪随机区别_用骰子DIY真随机助记词 | 火星号精选
  7. 中国电子云发布专属云CECSTACK 以全栈信创赋能千行百业
  8. kalilinux安装qt_Kali Linux 安装和搜狗输入法的安装
  9. 全网首发Oreo易支付开源+教程
  10. 【设计模式】—— 备忘录模式Memento
  11. openwrt: Makefile 框架分析[转载]
  12. 【iOS 15】iPhone如何录屏?iPhone屏幕录制技巧分享
  13. 【行业应用】阿里云实时计算 Flink 版 IoT 行业解决方案
  14. python教程40-财务自动生成财务报表
  15. 崛起于Springboot2.X之集成规则引擎Drools(41)
  16. 关于手机的挑选的精品帖子
  17. js资源按需加载和预加载
  18. 基于MockingBird声音克隆
  19. unity热更- 2 游戏大版本更新和热更新
  20. IntelliJ IDEA2017.3 安装破解过程

热门文章

  1. C语言 | 内存对齐03 - 内存对齐的公式
  2. python用动态规划求删除路径_Python | 动态规划求解TSP
  3. BootStrap笔记-BootStrap的安装与使用
  4. Qt笔记-QxOrm基本使用(对SQLLite进行增删改查)
  5. Spring Boot笔记-get请求发送json数据(方便前端vue解析)
  6. 你经常使用计算机吗这样的问题其主要缺点是,2015年10月自考02326操作系统模拟试题及答案3...
  7. pc显示器分辨率 前端_2020电竞显示器推荐
  8. 天地图卫星地图_AutoCAD使用卫星地图
  9. wpf绑定treeview 带查找_如何查找,修复和避免C#.NET中内存泄漏的8个最佳实践
  10. 腾讯Light·公益创新挑战赛圆满收官,郎朗担任公益传播大使