通信 | 特点 |
---|---|
单工通信 | 发送方和接收方固定,不会改变 |
半双工 | 双向通信,但不能同时进行 |
全双工 | 双向通信,并且可以同时进行 |
进程通信
目的:
1.数据传输:一个进程需要将它的数据发送给另一个进程
2.资源共享:多个进程之间共享同样的资源
3.通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某件事情(例如子进程退出时要通知父进程)
4.进程控制:有些进程希望完全控制另一个进程的执行,此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时指导它的状态改变
关于进程---[[进程管理]]--[[5.进线程间通信]]
通信的方法
1.管道 |
管道是用来给进程和进程之间通信的,
ps -ef | grep ssh
p1:stdout -- stdin:p2
⭕️管道分为 匿名管道 和 命名管道 ,这些管道就是基于系统文件的文件,管道文件是一个内存文件,它有自己的内存缓冲区,它并不需要从磁盘中读取数据
管道特征:
1.管道的生命周期跟随创建此管道的进程
2.管道可以让具有亲缘关系的进程相互通信,常用于 父子通信
3.管道是面向字节流的
4.半双工--管道只用来做单向通信
5.互斥与同步机制--对共享资源进行保护的方案
2.
3.
2.通信示例
2.1 匿名管道
- 管道就是进程打开的一个文件,就是说,当某个进程打开一个管道文件时,就跟管道建立了读写关系
![[Pasted image 20240825135232.png|300]] - 如果在进程基础上创建一个子进程,这个子进程就会拷贝父进程的东西(除了管道文件)
![[Pasted image 20240825135540.png|300]] - 但是这个时候的管道文件时双向通信的,不符合管道通信的特点,需要自己关闭一些文件,就可得到父进程的单向通信
![[Pasted image 20240825135748.png|300]]