文章目录

  • (1)为什么子进程需要被等待
  • (2)等待进程的方法
    • A:wait方法
    • B:waitpid方法
    • C:进程非阻塞式等待

前文说过,子进程被创建之后,父子进程究竟谁先运行是由调度器说了算。
但是,谁先结束呢?一般来说肯定是要让子进程先结束,想一想我们的bash,bash是所有命令的父进程,你总不能让bash先挂吧
其实之所以让子进程先退出,是因为父进程容易对子进程进行管理,而且子进程被创建的原因就是因为父进程想要让子进程帮助自己完成一些业务,因此它要拿到结果。因此父进程一般需要等待子进程

(1)为什么子进程需要被等待

既然子进程要先退出,那么子进程退出后就变成了僵尸状态,一旦变成僵尸状态,这个子进程就如同僵尸一样,杀也杀不死(因为它已经死了),所以它必须需要让父进程读取到它的状态,回收子进程信息。只有这样,子进程才能得到“救赎”,“魂魄”才能归天

(2)等待进程的方法

Linux系统编程17:进程控制之进程等待为什么进程需要被等待wait方法和waitpid方法阻塞和非阻塞等待相关推荐

  1. alin的学习之路(Linux系统编程:五)(目录操作、进程相关概念)

    alin的学习之路(Linux系统编程:五)(目录操作.进程相关概念) 1. 目录操作 1. 查看工作目录 getcwd char *getcwd(char *buf, size_t size) 功能 ...

  2. Linux系统编程---17(条件变量及其函数,生产者消费者条件变量模型,生产者与消费者模型(线程安全队列),条件变量优点,信号量及其主要函数,信号量与条件变量的区别,)

    条件变量 条件变量本身不是锁!但它也可以造成线程阻塞.通常与互斥锁配合使用.给多线程提供一个会合的场所. 主要应用函数: pthread_cond_init 函数 pthread_cond_destr ...

  3. Linux系统编程1-7总结项目:进度条的实现

    文章目录 (1)解决两个问题 A:缓冲区问题 B:回车与换行 (2)进度条实现 (1)解决两个问题 A:缓冲区问题 有如下代码 #include <stdio.h> #include &l ...

  4. 【README】Linux系统编程必读:本专栏内容提要以及系统调用接口总结

    文章目录 前言 第一部分:博客知识点 (1)基础篇 Linux系统编程1:Linux中使用率最高的一些命令 Linux系统编程2:详解Linux中的权限问题 Linux系统编程3:基础篇之详解Linu ...

  5. linux 可定义信号数,Linux系统编程(20)——信号基本概念

    信号及信号来源 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知 ...

  6. Linux系统编程总结

    day2 vim的三种工作模式 命令模式 vi hello.c zz 保存退出 2.编辑模式 i a o s (有大写)可以写东西 3.末行模式: 文本和末行模式不能直接切换 要切换回命令模式 再到末 ...

  7. vbs结束进程代码_物联网学习教程—Linux系统编程之进程控制

    Linux系统编程之进程控制 一.结束进程 首先,我们回顾一下 C 语言中 continue, break, return 的作用: continue: 结束本次循环 break: 跳出整个循环,或跳 ...

  8. Linux系统编程之进程与线程控制原语对比

    Linux系统编程之进程与线程控制原语对比 进程 线程 fork pthread_create exit pthread_exit wait pthread_join kill pthread_can ...

  9. linux系统编程学习_(2)进程控制-- fork函数、exec函数族、回收子进程--孤儿进程僵尸进程、wait函数

    linux系统编程学习_(2)进程控制-- fork函数.exec函数族.回收子进程–孤儿进程僵尸进程.wait函数 进程控制 fork()函数 创建一个子进程. pid_t fork(void); ...

最新文章

  1. 传入json对象_【Python基础】可迭代对象amp;迭代器对象及其实现
  2. s11.1 lsof:查看进程打开的文件
  3. java jsr_分叉并加入Java 7 – JSR 166并发实用程序
  4. Java的jvm原理和常识
  5. oracle一个表拆成多个表,oracle拆分函数,将字符串拆分成多行多字段表数据
  6. 为什么大部分的程序员成不了架构师?为什么?
  7. 关于[知识竞赛现场管理系统-双屏PPT版]内置的第三方答题平台以及[评委计分系统-双屏专业版]的特殊疑难问题 汇编
  8. 第1节 中华人民共和国网络安全法
  9. 一秒钟速算(WINFORM)
  10. No valid crumb was included in the request
  11. ubuntu下载安装google浏览器
  12. 中国科学院大学计算机考研信息汇总
  13. JavaEE之--登录页面(用户名、密码、验证码)
  14. DEDE织梦网站首页仿制实战操作
  15. TeamViewer用户注意:请尽快将其更新为最新版本
  16. QT 幸运大转盘动画
  17. Vision Transformer 必读系列之图像分类综述(二): Attention-based
  18. 致远oa系统报价_用友致远OA 系统 一般多少钱?(公司60-70台左右的电脑)
  19. java looper_java-无法在某些设备上尚未调用Looper.prepare...
  20. 基于Java毕业设计银创科技有限公司人事信息系统源码+系统+mysql+lw文档+部署软件

热门文章

  1. mac php编译freetype,Mac下本机自带PHP缺少freetype最终解决方案
  2. 寄存器分配图着色_【02】从零开始的卡通渲染-着色篇1
  3. 计算机主机配置有哪些,电脑主机配置清单有哪些 电脑主机配置清单及价格
  4. Aprior算法简化算法——FP-Tree思想与实现
  5. 中文名称的文件传不到ftp服务器,FTP上传文件时文件的中文名称变为#号,解决方法...
  6. react中@withrouter_为什么 withRouter 高阶组件应该 处于最外层?
  7. scsi协议_存储协议有哪些类型?常见存储协议分析
  8. Java笔记-spring-rabbit框架中消息中header的添加
  9. Qt笔记-Q3DScatter及QCustom3DItem的基本使用
  10. C++笔记-设置cout输出数据的宽度和填充