2021.03.29学习笔记

本文介绍了多进程多线程的概念及其优缺点,重点讲解了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 3423 0 15:32 pts/0 00:00:00[a.out] < defunct>
产生的原因,当进程走完自己的生命周期之后,会执行自己的喜用调用exit(9)函数,然后内存被释放,没有执行代码。但是在进程表里面仍留下进程信息(pid,退出进程信息),知道父进程将他们回收

如何避免僵尸进程
避免僵尸进程的办法:wait函数族

进程间的通信(IPC)方式

管道:有名管道和无名管道
消息队列
信号量
共享内存
套接字
进程间通信的目的:
1、数据传输:一个进程发送数据给另一个进程
2、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该第一时间看到
3、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时通知父进程)
4、资源共享:多个进程之间共享同样的资源。为做到这一点,需要内核提供锁和同步机制
5、进程控制:

管道通信:无名管道:一边写,一边读
管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道
int pipe()
无名管道
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值