2022-1-16 牛客C++项目 —— Linux多进程编程 —— waitpid函数
复习用的问题
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函数相关推荐
- 2022-1-16牛客C++项目——Linux多进程编程——进程间通信
常见的面试题: 1.你知道进程间通信的方式有哪几种吗? 2.这个通信方式具体的实现原理是什么?怎么实现的? 复习时候需要使用的问题: 1.进程间的通信是什么?进程间为什么需要通信? 2.进程间通信的目 ...
- 仿牛客论坛项目(上)
代码仓库:https://gitee.com/qiuyusy/community 仿牛客论坛项目(下) 仿牛客论坛项目上 1. Spring 在测试类中使用Spring环境 @Primary的作用 @ ...
- 仿牛客论坛项目(下)
代码仓库:https://gitee.com/qiuyusy/community 仿牛客论坛项目(上) 仿牛客论坛项目 15.kafka 1.阻塞队列 2.Kafka入门 简介 术语解释 下载 配置 ...
- 云服务器上部署仿牛客网项目
云服务器上部署仿牛客网项目 安装JRE 安装Maven 安装MySQL 给mysql导入数据 安装Redis 安装kafka 安装ElasticSearch Wkhtmltopdf 安装tomcat ...
- Java面试题16 牛客 以下java程序代码,执行后的结果是()
Java面试题16 牛客 以下java程序代码,执行后的结果是() 1 2 3 4 5 6 7 8 9 10 public class Test { public static void ma ...
- 仿牛客社区项目笔记-帖子模块(核心)
仿牛客社区项目笔记-帖子模块(核心) 1. 帖子模块 1.1 过滤敏感词 1.2 发布帖子 1.3 帖子详情 1.4 显示评论 1.5 添加评论 1.6 私信列表 1.7 发送私信 1. 帖子模块 分 ...
- 仿牛客社区项目(第一章)
文章目录 第一章:初始 SpringBoot,开发社区首页 仿牛客社区项目开发首页功能 一. 实体引入 1. User类 2. DiscussPost 类 3. Page类 二. 配置文件 三. da ...
- 仿牛客论坛项目(3)
仿牛客论坛项目 一.阻塞队列 1.1 测试 二.kafka入门 2.1 kafka下载 2.2 测试 三.Spring整合kafka 3.1 引入依赖 3.2 修改配置文件 3.3 测试 四.发布系统 ...
- 仿牛客论坛项目(5)
仿牛客论坛项目 一.SpringSecurity入门案例 1.1 添加依赖 1.2 配置文件 1.3 工具类 CommunityUtil 1.4 配置类 SecurityConfig 1.5 实体类 ...
最新文章
- 我放弃了年薪200万的岗位,因为“复制粘贴”的技术活让人厌恶
- Maven的简单使用
- 《数据库系统实训》实验报告——游标
- Strut学习-web.xml
- 如何更改从Outlook发送的电子邮件中的“答复”地址
- 字符串太占内存了,我想了各种奇思淫巧对它进行压缩
- django22:复制网页与css/时区设置
- LeetCode 1442. 形成两个异或相等数组的三元组数目(前缀异或)
- 如何基于谷歌的最强 NLP 模型进行影评分析?
- android AChartEnginee讲解之自定义图表类
- Django 09-2 模型层 字段
- 自由软件之父Richard Stallman及其思想
- 如何说服你的同事使用TDD
- tomcat启动失败:Failed creating java jvm.dll
- Apostrophe not preceded错误
- 九宫格拼图android代码,Android 多图上传后将图片进行九宫格展示的实例代码
- 数组:605.种花问题
- google pay(谷歌支付) 开发者账号配置的坑
- Flexsim物流配送中心系统仿真
- 参会记录|2022 人工智能安全学术研讨会参会总结
热门文章
- python实现借助360加固保代码实现批量、断点再续等功能
- Epoc.js:开源JavaScript 大脑传感器控制器软件
- Portkey——打造人人皆是艺术家的NFT市场
- nas918+支持的cpu_PC硬件与外设 篇六十一:这次稳了吧?细节设计提升的九州风神AS500 Plus 风冷散热器搭配苏妈3800X实测_CPU散热器...
- SAP 详细解析成本核算步骤
- arch linux必备软件,ArchLinux安装常用软件
- c语言 自增运算符,自增运算符
- MATLAB 绘图时如何设置中文宋体英文新罗马
- 二级路由dhcp关闭连不上wifi_怎么防止蹭网 防止wifi被蹭教程【详解】
- 在Windows XP中对文件进行加密