Linux 学习笔记
摘自于 硬核Linux 攻略,仅供个人学习使用,转载请注明出处
1. Linux进程通信方式
信号
信号是软件层次上对中断机制的一种模拟,是一种异步通信方式
信号来源:硬件来源:按下了键盘 或者 其他硬件故障
软件来源:最常用发送信号的系统函数是kill, raise, alarm和setitimer以及sigqueue函数,软件来源还包括一些非法运算等操作
进程对信号的处理:
忽略信号:但不能忽略SIGSTOP 与SIGKILL信号
捕捉信号:执行相应的处理函数
执行缺省操作
管道
管道的作用正如其名,需要通信的两个进程在管道的两端,进程利用管道传递信息。
管道对于管道两端的进程而言,就是一个文件,但是这个文件比较特 殊,它不属于文件系统并且只存在于内存中
管道 又分为: 命名管道 与 匿名管道
匿名管道有两大限制:1. 管道是半双工的,数据只能在一个方向上流动
2. 管道只能用于有亲缘关系的进程,而命名管道允许没有亲缘关系的进程进行通信
先入先出队列
信号队列
共享内存
- 为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间。进程就可以直接读写这一块内存而不需要进行数据的拷贝,从而大大提高效率。
- 共享内存并未提供同步机制,在一个进程结束对共享内存的写操作之前,并无自动机制可以阻止另二个进程开始对它进行读取。所以,我们通常需要用其他的机制来同步对共享内存的访问。
套接字 Socket
- 面向连接的通信方式TCP
- 无连接的通信方式UDP