1.wait和waitpid的差别
(1)基本功能是一样的,都是用来回收子进程的
(2)waitpid可以回收指定PID的子进程
(3)waitpid可以阻塞式和非阻塞式两种工作模式

2.waitpid原型介绍

pid_t waitpid(pid_t pid, int *wstatus, int options);

(1)参数1:要回收子进程的PID号,参数2:和wait的参数一样,参数三:选择阻塞和非阻塞两种工作模式(0阻塞,WNOHANG 非阻塞)
(2)返回值:返回回收的子进程的PID

3.代码实现
(1)waitpid实现wait的效果

#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>int main(void)
{pid_t pid = -1;pid_t ret = -1;int status = -1;pid = fork();if(pid > 0){printf("parent 子进程pid = %d\n",pid);sleep(1);       //第三组让子进程先执行//pid_t waitpid(pid_t pid, int *wstatus, int options);//第一组://ret = waitpid(-1,&status,0);  //-1表示不等待某个特定PID的子进程//而是回收任意一个子进程,0表示用默认的方式(阻塞式)来进行等待。//第二组://ret = waitpid(pid,&status,0); //等待回收PID为为pid的这个子进程//如果当前没有PID为pid这个子进程则返回-1,有则返回这个子进程的PID//第三组//ret = waitpid(pid,&status,WNOHANG);printf("子进程已经被回收,子进程的pid = %d\n",ret);printf("子进程是否正常退出:%d\n",WIFEXITED(status));printf("子进程是否正常退出:%d\n",WIFSIGNALED(status));printf("子进程正常终止的终止值:%d\n",WEXITSTATUS(status));}else if(pid == 0){//sleep(1);     //第三组让父进程先执行printf("child pid = %d\n",getpid());//return 1;exit(2);}else{perror("fork");return -1;}return 0;
}

4.竞态初步引入
(1)竞态的全程就是竞争状态,就是多进程下,多个进程抢占系统内存资源(内存、CPU文件IO)
(2)此时很有可能出现不确定结果,操作系统给我们提供了很多方法消除竞态,我们在要学会合理的去使用(像这里的sleep,waitpid等等)。

waitpid函数的介绍相关推荐

  1. linux c之wait和waitpid函数的用法和总结

    1.wait和waitpid函数的介绍 1)  wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或者该进程接收到了一个指定的信号为止.如果该父进程没有子进程或者它的 ...

  2. Linux wait() 和 waitpid()函数介绍

    转载自http://blog.csdn.net/wallwind/article/details/6998602 当一个进程正常或异常终止的时候,内核就像其父进程发送SIGCHLD信号,因为子进程是个 ...

  3. 深入浅出---unix多进程编程之wait()和waitpid()函数

    Wait和waipid函数 当一个进程正常或异常终止的时候,内核就像其父进程发送SIGCHLD信号,因为子进程是个一步事件,所以这种信号也是内核系那个父进程发的异步通知.父进程可以选择忽略该信号,或者 ...

  4. 2022-1-16 牛客C++项目 —— Linux多进程编程 —— waitpid函数

    复习用的问题 1.waitpid 函数介绍.从传入参数和返回值两个角度. 2.当传入的参数为什么的时候,这个函数的功能和 wait()函数的功能一致. /* #include <sys/type ...

  5. 8.6 wait和waitpid函数-进程控制

    8.6 wait和waitpid函数-进程控制 当一个进程正常或异常终止时,内核就向其父进程发送SIGCHLD信号.因为子进程终止是个异步事件(这可以在父进程运行的任何时候发生),所以这种信号也是内核 ...

  6. HTML5 Audio标签方法和函数API介绍

     问说网 > 文章教程 > 网页制作 > HTML5 Audio标签方法和函数API介绍 Audio APIHTML5HTML5 Audio预加载 HTML5 Audio标签方法和函 ...

  7. python介绍和用途-python匿名函数的介绍及用途

    匿名函数 用lambda能够创建一个匿名函数,这种函数得名于省略了用def声明函数的标准步骤. 语法 lambda [arg1 [,arg2,.....argn]]:expression 如何使用 我 ...

  8. setsockopt()函数功能介绍

    setsockopt()函数功能介绍 功能描述:获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层. 用法: #include <sys/types.h ...

  9. Python中函数的介绍以及用法

    1.函数的介绍 在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数 定义函数的规则: 函数代码块以 def 关键词开头,后接函 ...

最新文章

  1. 比特币现金扬声器系列II将领先的比特币一起带来
  2. Efficiency / Relative Efficiency and the Efficient Estimator
  3. C语言程序设计蔺德军,C语言程序设计上机实验与习题解答(第2版)
  4. copy和mutablecpy区别
  5. 爬取虎牙之三:通过json数据获取所有直播情况
  6. php 生成excel空白,phpexcel库在localhost上运行良好,但在服务器中生成空白的excel文件...
  7. 用PaddlePaddle(飞桨)实现minist数据集的GAN生成
  8. mybatis开启字段自动映射为java驼峰命名规则
  9. Nginx负载均衡,ssl原理,生成ssl密钥对,Nginx配置ssl
  10. python的sift算法_opencv python SIFT(尺度不变特征变换)
  11. 前缀、中缀、后缀表达式以及逆波兰计算器
  12. 基于stm32单片机外文文献_单片机STM32外文文献翻译、中英文翻译
  13. 如何养成良好的生活习惯 — 饮食、睡眠、运动
  14. web前端开发工程师面试题大全
  15. IcedTea6版本1.8
  16. Excel如何将单元格中的多数字提取出来
  17. 用文氏图解析条件概率与贝叶斯概率
  18. 宏碁暗影骑士4安装不了Linux,宏碁暗影骑士4评测:在细节中不断改进前行!
  19. 不懂就学——什么是input和output?
  20. Python机器学习应用之监督学习-上证指数涨跌预测实例

热门文章

  1. 西部数据HC570 22TB HDD 技术讲解
  2. leetcode二叉树java
  3. python计算圆周率代码_用算法实现计算圆周率-几何概型估算圆周率Python编程小程序...
  4. 【10】python 读写word文档
  5. hadoop报错ERROR: Cannot set priority of namenode process
  6. 为什么蓝牙耳机玩吃鸡总是延迟?500左右哪款蓝牙耳机好用?
  7. SVN操作报错(乱码浠vn cleanup钬)
  8. JAVA 拼图游戏更换图片
  9. 12306官网自动刷票5秒太慢了,试试这个方法提速
  10. 【Java】 数组转 List 的三种方式及对比