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

/*
#include <sys/types.h>
#include <sys/wait.h>
pid_t waitpid(pid_t pid, int *wstatus, int options);
功能:回收指定进程号的子进程,可以设置是否阻塞
参数:pid:pid > 0 :某个子进程的 pidpid = 0 :回收当前进程组的所有子进程,如果有子进程被送往别的进程组,那个子进程是不能回收的pid = -1 :回收所有的子进程,包括送往别的组的子进程,此时功能相当于 wait()pid < -1 : 某个组的组id的绝对值,回收父进程在那个组当中的所有子进程也就是一组都杀死吗?包括父进程在内的所有进程(理解的不对)options:设置调用该函数的时候是否阻塞0 :阻塞WNOHANG :非阻塞
返回值:> 0 : 返回子进程的id= 0 :options=WNOHANG表示还有子进程活着= -1:错误,表示没有子进程了
*/
#include <sys/types.h>
#include <sys/wait.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main(void){//有一个父进程,要创建五个子进程pid_t pid;for(int i = 0;i < 5;++i){fork();//检测是否是子进程,如果是被创建出来的子进程就跳出循环,防止多次调用创建进程的代码。if(pid == 0){break;}if(pid > 0){while (1){printf("oarent,pid = %d\n",getpid());//wait(NULL);int st;//int ret = waitpid(-1,&st,0);//相当于 wait()int ret = waitpid(-1,&st,WNOHANG);//设置成非阻塞if(ret == -1){break;}else if(ret == 0){continue;//表明还有子进程没有被杀死}else if(ret > 0){if(WIFEXITED(st)){//判断进程是否正常退出printf("退出的状态码:%d\n",WEXITSTATUS(st));}if(WIFSIGNALED(st)){//判断是否是异常终止,被信号干掉printf("被哪个信号干掉了:%d\n",WTERMSIG(st));}printf("child die.");}sleep(1);}}else if(pid == 1){// while (1)// {printf("child,pid = %d\n",getpid());/* code */// }exit(0);}}return 0;
}

参数 pid = 0 的时候,回收的是本组进程组的子进程,被送往其他进程组的子进程无法被回收。

参数 pid = -1 的时候,回收的子进程是父进程下所有的子进程,即使子进程被送往其他的组。

2022-1-16 牛客C++项目 —— Linux多进程编程 —— waitpid函数相关推荐

  1. 2022-1-16牛客C++项目——Linux多进程编程——进程间通信

    常见的面试题: 1.你知道进程间通信的方式有哪几种吗? 2.这个通信方式具体的实现原理是什么?怎么实现的? 复习时候需要使用的问题: 1.进程间的通信是什么?进程间为什么需要通信? 2.进程间通信的目 ...

  2. 仿牛客论坛项目(上)

    代码仓库:https://gitee.com/qiuyusy/community 仿牛客论坛项目(下) 仿牛客论坛项目上 1. Spring 在测试类中使用Spring环境 @Primary的作用 @ ...

  3. 仿牛客论坛项目(下)

    代码仓库:https://gitee.com/qiuyusy/community 仿牛客论坛项目(上) 仿牛客论坛项目 15.kafka 1.阻塞队列 2.Kafka入门 简介 术语解释 下载 配置 ...

  4. 云服务器上部署仿牛客网项目

    云服务器上部署仿牛客网项目 安装JRE 安装Maven 安装MySQL 给mysql导入数据 安装Redis 安装kafka 安装ElasticSearch Wkhtmltopdf 安装tomcat ...

  5. Java面试题16 牛客 以下java程序代码,执行后的结果是()

    Java面试题16 牛客 以下java程序代码,执行后的结果是() 1 2 3 4 5 6 7 8 9 10 public class Test {     public static void ma ...

  6. 仿牛客社区项目笔记-帖子模块(核心)

    仿牛客社区项目笔记-帖子模块(核心) 1. 帖子模块 1.1 过滤敏感词 1.2 发布帖子 1.3 帖子详情 1.4 显示评论 1.5 添加评论 1.6 私信列表 1.7 发送私信 1. 帖子模块 分 ...

  7. 仿牛客社区项目(第一章)

    文章目录 第一章:初始 SpringBoot,开发社区首页 仿牛客社区项目开发首页功能 一. 实体引入 1. User类 2. DiscussPost 类 3. Page类 二. 配置文件 三. da ...

  8. 仿牛客论坛项目(3)

    仿牛客论坛项目 一.阻塞队列 1.1 测试 二.kafka入门 2.1 kafka下载 2.2 测试 三.Spring整合kafka 3.1 引入依赖 3.2 修改配置文件 3.3 测试 四.发布系统 ...

  9. 仿牛客论坛项目(5)

    仿牛客论坛项目 一.SpringSecurity入门案例 1.1 添加依赖 1.2 配置文件 1.3 工具类 CommunityUtil 1.4 配置类 SecurityConfig 1.5 实体类 ...

最新文章

  1. 我放弃了年薪200万的岗位,因为“复制粘贴”的技术活让人厌恶
  2. Maven的简单使用
  3. 《数据库系统实训》实验报告——游标
  4. Strut学习-web.xml
  5. 如何更改从Outlook发送的电子邮件中的“答复”地址
  6. 字符串太占内存了,我想了各种奇思淫巧对它进行压缩
  7. django22:复制网页与css/时区设置
  8. LeetCode 1442. 形成两个异或相等数组的三元组数目(前缀异或)
  9. 如何基于谷歌的最强 NLP 模型进行影评分析?
  10. android AChartEnginee讲解之自定义图表类
  11. Django 09-2 模型层 字段
  12. 自由软件之父Richard Stallman及其思想
  13. 如何说服你的同事使用TDD
  14. tomcat启动失败:Failed creating java jvm.dll
  15. Apostrophe not preceded错误
  16. 九宫格拼图android代码,Android 多图上传后将图片进行九宫格展示的实例代码
  17. 数组:605.种花问题
  18. google pay(谷歌支付) 开发者账号配置的坑
  19. Flexsim物流配送中心系统仿真
  20. 参会记录|2022 人工智能安全学术研讨会参会总结

热门文章

  1. python实现借助360加固保代码实现批量、断点再续等功能
  2. Epoc.js:开源JavaScript 大脑传感器控制器软件
  3. Portkey——打造人人皆是艺术家的NFT市场
  4. nas918+支持的cpu_PC硬件与外设 篇六十一:这次稳了吧?细节设计提升的九州风神AS500 Plus 风冷散热器搭配苏妈3800X实测_CPU散热器...
  5. SAP 详细解析成本核算步骤
  6. arch linux必备软件,ArchLinux安装常用软件
  7. c语言 自增运算符,自增运算符
  8. MATLAB 绘图时如何设置中文宋体英文新罗马
  9. 二级路由dhcp关闭连不上wifi_怎么防止蹭网 防止wifi被蹭教程【详解】
  10. 在Windows XP中对文件进行加密