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. 无需额外数据,首次实现ImageNet 87.1% 精度,颜水成团队开源VOLO
  2. PPT|工业互联网关键技术专利态势
  3. Java Cardioid 心脏形曲线 (整理)
  4. Win64 驱动内核编程-34.对抗与枚举MiniFilter
  5. Java操作MongoDB代码示例
  6. iOS __block 与 __weak
  7. matlab 的cat函数
  8. ubuntu shell简介
  9. zabbix的rc控制脚本
  10. BiSeNet V2论文及源码
  11. 关于PHPExcel 导出下载表格,调试器响应乱码
  12. elasticsearch 删除满足条件的语句_ElasticSearch的基本概念和集群分布式底层实现
  13. Netty工作笔记0031---NIO零拷贝应用案例
  14. 免杀的艺术:史上最全的汇编Shellcode的技巧(三)
  15. Mysql优化(出自官方文档) - 第六篇
  16. leetcode——给定一个字符串,求不重复字符的最长子字符串的长度
  17. 智慧城市顶层设计的“二十八”个问题模型(SCLM)
  18. Android实现滑动的几种方式
  19. Android S 新特性:应用行为更改
  20. 全面认识包图,组件图,部署图

热门文章

  1. python爬虫利器p_Python爬虫利器五之Selenium的用法
  2. usb管控软件_数据防泄密软件介绍
  3. Linux笔记-Linux中的TracerPid
  4. C++笔记-使用std::funcional代替函数指针
  5. Qt文档阅读笔记-QSslConfiguration官方解析与实例
  6. C++设计模式-观察者模式
  7. Java工作笔记-String转Integer可以转与不可以转的情况
  8. C/C++ OpenCV均值滤波
  9. JAVA做一个五星评论打分字体,java中的Font
  10. java生成验证码SWT_Java SWT Lable框中显示图片验证码