---- 整理自狄泰软件唐佐林老师课程

查看所有文章链接:(更新中)Linux系统编程训练营 - 目录

文章目录

  • 1. 进程创建回顾
  • 2. 再论进程创建
    • 2.1 思考
    • 2.2 vfork()深度分析
    • 2.3 vfork()要点分析
    • 2.4 fork()的现代优化
    • 2.5 编程实验:fork() & vfork()
  • 3. exec与system简介
    • 3.1 exec函数家族
    • 3.2 进程创建库函数
    • 3.3 编程实验:system("./helloworld")

1. 进程创建回顾

  • 问题

    • 进程创建是否只能依赖于fork()和execve() ?

2. 再论进程创建

  • fork()通过 完整复制 当前进程的方式创建新进程
  • execve()根据参数覆盖进程数据(一个不留)
    注释:如果fork后立马调用execve,那么没必要复制父进程的数据

  • pid_t vfork(void);

    • vfork()用于创建子进程,然而 不会复制 父进程空间中的数据
    • vfork()创建的子进程直接使用父进程空间(没有完整独立的进程空间)
    • vfork()创建的子进程对数据(变量)的修改会直接反馈到父进程中
    • vfork()是为了execve()系统调用而设计的

2.1 思考

下面的程序运行后会发生什么?

【参看链接】:07 - 进程创建大盘点 / 07 / 00vfork / main.c

2.2 vfork()深度分析

2.3 vfork()要点分析

  • vfork()成功后,父进程将等待子进程结束
  • 子进程 可以使用父进程的数据(堆、栈、全局
  • 子进程可以从创建点调用其它函数,但不要从创建点返回
    • 当子进程执行流回到创建点或者需要结束时,使用 _exit(0) 系统调用
    • 如果 使用 return 0 将破坏栈结构,导致后续父进程执行出错

【参看链接】:07 - 进程创建大盘点 / 07 / 01vfork / main.c

2.4 fork()的现代优化

  • Copy-on-Write技术
    多个任务访问同一资源时,在写入操作修改资源时,复制资源的原始副本
  • fork()引入Copy-on-Write之后,父子进程共享相同的进程空间
    • 当父进程或子进程的其中之一修改内存数据,则实时复制进程空间
    • fork() + execve() <==> vfork() + execve()

2.5 编程实验:fork() & vfork()

【参看链接】:07 - 进程创建大盘点 / 07 / 02

3. exec与system简介

3.1 exec函数家族



【参看链接】:07 - 进程创建大盘点 / 07 / 03 / test.c

3.2 进程创建库函数

  • #include <stdlib.h>
  • int system(const char* command);
    • 参数:程序名及进程参数(如:pstree -A -p -s $$)
    • 返回值:进程退出状态

注释:system 首先会创建shell进程,效率比我们自己创建的create_process(…) 低


【参看链接】:07 - 进程创建大盘点 / 07 / 04 / test.c

3.3 编程实验:system(“./helloworld”)

【参看链接】:07 - 进程创建大盘点 / 07 / 05


07 - 进程创建大盘点相关推荐

  1. CentOS vs REHL、鸿蒙vs Fuchsia,操作系统岁末大盘点

    天下大势,合久必分,分久必合,操作系统作为云计算与物联网时代的IT底座,历来是兵家必争之地,近期更是风起云涌,先是苹果推出M1芯片并且与台积电的结盟,不但在桌面市场甩出王炸更为为苹果未来的云Linux ...

  2. 车联网2022上半年“十四五”规划大盘点

    关注公众号回复"220713"可提供相关政策全文下载 本文盘点2022上半年国务院.广西.辽宁.湖南.安徽.交通运输部和科技部.北京市.云南省.重庆市等"十四五" ...

  3. “免费项目管理软件”20款大盘点!你认识哪几款?

    "工欲善其事,必先利其器". 想成为优秀的项目经理,除了要苦练管理内功之外,用好优秀的项目管理软件往往能取得事半功倍的效果.今天给大家送福利,来晒晒那些高级项目管理人员最喜欢甚至私 ...

  4. 大盘点|基于RGB图像下的机器人抓取

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 前言 近期读取了一些最新基于RGB图像下的机器人抓取论文,在这里分享下思路. 1.Optimizing ...

  5. 2019微软研究大盘点:机器学习突破即将到来,人机交互更加真实

    点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 十三 发自 凹非寺 本文转载自:量子位(QbitAI) 研究是为了实现一个长期目标,通 ...

  6. 大盘点 | 2020年「13篇」人脸算法最佳综述

    在过去的一年中,计算机视觉领域出现了许多优秀的工作,并推动了相关领域的技术发展与进步.去年上半年,极市曾盘点过计算机视觉领域综述论文,并进行了分类整理,得到了很多读者的支持.因此,在2021年初,我们 ...

  7. 微软年度研究大盘点:ML突破将到来,人机交互更真实,惜别沈向洋

    2019-12-25 13:19:23 十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 研究是为了实现一个长期目标,通常是渐进式的发展过程. 随着岁末钟声的临近,微软研究院回顾了这一年来在 ...

  8. 2019年机器学习市场潜力大盘点(附27份资料完整版)

    利用更深入的洞察来加强销售和市场营销,以改善客户体验,已经成为推动人工智能和机器学习应用的主要催化剂之一. 瑞士独立的经济研究和咨询公司EconSight,最近公布了他们题为"Artific ...

  9. linux 进程创建 进程启动 监控

    0x00 简介 在入侵检测的过程中,进程创建监控是必不可少的一点,因为攻击者的绝大多数攻击行为都是以进程的方式呈现,所以及时获取到新进程创建的信息能帮助我们快速地定位攻击行为. 本文将介绍一些常见的监 ...

最新文章

  1. java基础讲解05-----流程控制语句
  2. Android中实现双缓冲(画板应用)和XML文件定义菜单
  3. 算法:正则表达式匹配
  4. async python两个_【Python】python中实现多进程与多线程
  5. C算法编程题(一)扑克牌发牌
  6. adobe stream的最后一行空行_Excel VBA 7.66 如何快速删除数据间空行?手动慢又乱!VBA快又准...
  7. Flash中textInput限定中英文字数
  8. tensorflow2.0 图像处理项目_游戏爱好者应该看看这个开源项目
  9. winform界面嵌入dwg图纸_完美解决窗体中预览DWG图形(C#版)
  10. 金蝶K3批量出库语句与执行方法
  11. HTML在手机上能编写吗,手机版使用开发
  12. 敏捷测试的关键成功要素
  13. 笔记本电脑怎么设置wifi热点共享
  14. windows/vs如何获取程序内存使用量和时间花费
  15. 没有比粥更温柔的了。念予毕生流离红尘,就找不到一个似粥温柔的人。
  16. mysql 语法 日期转换成字符串_mysql日期转换成字符串的方法
  17. 51nod1423 最大二“货”问题
  18. 苹果youtube无法连接网络_解决苹果手机Apple ID被禁止下载或无法连接到AppStore等问题...
  19. A股上市公司财报披露时间
  20. 【超融合】818超融合发展经历了哪几个阶段!

热门文章

  1. 进销存系统PB(powerbuilder)+SQL SERVER。
  2. test---test
  3. 图像超分辨率:调制Modulating Image Restoration with Continual Levels via Adaptive Feature Modification Layer
  4. 用C#语言编写记事本
  5. 联合体Union详解
  6. vue 天地图 T is not defined
  7. 咋搭建域控服务器,Active Directory虚拟机搭建域控服务器环境
  8. Flink的sink实战之一:初探,2020-2021蚂蚁金服Java面试真题解析
  9. 贝叶斯公式与朴素贝叶斯算法
  10. 递归神经网络LSTM原理——结合实例MATLAB实现