0329 嵌入式学习笔记(15)wait/僵尸进程/管道

本文介绍了wait函数族在等待子进程结束中的作用,以及waitpid函数如何指定等待特定进程。僵尸进程的产生是因为父进程未及时回收已结束的子进程,而避免僵尸进程的方法正是使用wait函数族。同时,文章提到了进程间通信(IPC)的几种方式,包括管道、消息队列、信号量和共享内存等,强调了IPC在数据传输、共享数据、通知事件和资源共享等方面的重要性。
摘要由CSDN通过智能技术生成

wait函数族
1、wait函数:将当前进程挂起,等待信号来临,再继续运行
用来等待子进程的结束
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

		pid_t wait(int *wstatus);

WEXITSTATUS:宏定义:返回子进程的退出状态
在这里插入图片描述
在这里插入图片描述

2、waitpid:它可以指定等待的进程号
pid_t waitpid(pid_t pid,int *wstatus,int options);

僵尸进程
1、zombie
3424 2423 0 15:32 pts/0 00:00:00 [a.out]< defunct >
产生的原因:当进程走完自己的生命周期之后,会执行自己的系统调用exit(9)函数,然后内存被释放,没有执行代码。但是在进程表里面仍留下进程信息(pid,退出信息),直到父进程将他们回收

如果子进程先结束而父进程后结束,即子进程结束后,父进程还在继续运行但是并未调用wait/waitpid那子进程就会成为僵尸进程。

僵尸进程应该尽量避免!!!!!
避免僵尸进程的方法:wait函数族

进程间的通讯方式(IPC)方式

管道:有名管道和无名管道
消息队列
信号量
共享内存
套接字
进程间通信的目的:
1、数据传输:一个数据决定另一进程,发送数据在几个字节到几兆字节之间
2、共享数据:多个进程共享一个数据,如果一个进程对共享数据修改,那么别的进程应该第一时间看到
3、通知事件:一个进程需要向另一个或一组进程进行发送消息,通知它(它们)发生了某种事件(如进程终止时通知父进程)
4、资源共享:多个进程之间共享同样的资源。为做到这一点,需要内核提供锁和同步机制
5、进程控制:
管道通信:无名管道:一端写,一端读。
管道是半双工的,数据只能向一个方向流动,需要双方通信时,需要建立两个管道

int pipe()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值