- SIGSTOP
- SIGSYS
- SYSTERM
- SIGTSIP
- SIGTTIN 和 SIGTTOU
- SIGTRAP
- SIGURG
- SIGUSR1 和 SIGUSR2
- SIGXCPU
- SIGXFSZ
- SIGWINCH
管道 pipeLinux 系统中的进程可以通过建立管道 pipe 进行通信 。
在两个进程之间,可以建立一个通道,一个进程向这个通道里写入字节流,另一个进程从这个管道中读取字节流 。管道是同步的,当进程尝试从空管道读取数据时,该进程会被阻塞,直到有可用数据为止 。shell 中的管线 pipelines 就是用管道实现的,当 shell 发现输出
sort <f | head
它会创建两个进程,一个是 sort,一个是 head,sort,会在这两个应用程序之间建立一个管道使得 sort 进程的标准输出作为 head 程序的标准输入 。sort 进程产生的输出就不用写到文件中了,如果管道满了系统会停止 sort 以等待 head 读出数据文章插图
管道实际上就是 |,两个应用程序不知道有管道的存在,一切都是由 shell 管理和控制的 。
共享内存 shared memory两个进程之间还可以通过共享内存进行进程间通信,其中两个或者多个进程可以访问公共内存空间 。两个进程的共享工作是通过共享内存完成的,一个进程所作的修改可以对另一个进程可见(很像线程间的通信) 。
文章插图
在使用共享内存前,需要经过一系列的调用流程,流程如下
- 创建共享内存段或者使用已创建的共享内存段(shmget())
- 将进程附加到已经创建的内存段中(shmat())
- 从已连接的共享内存段分离进程(shmdt())
- 对共享内存段执行控制操作(shmctl())
文章插图
写入的第一个字节是读取的第一个字节,写入的第二个字节是读取的第二个字节,依此类推 。
消息队列 Message Queue一听到消息队列这个名词你可能不知道是什么意思,消息队列是用来描述内核寻址空间内的内部链接列表 。可以按几种不同的方式将消息按顺序发送到队列并从队列中检索消息 。每个消息队列由 IPC 标识符唯一标识 。消息队列有两种模式,一种是严格模式,严格模式就像是 FIFO 先入先出队列似的,消息顺序发送,顺序读取 。还有一种模式是 非严格模式,消息的顺序性不是非常重要 。
套接字 Socket还有一种管理两个进程间通信的是使用 socket,socket 提供端到端的双相通信 。一个套接字可以与一个或多个进程关联 。就像管道有命令管道和未命名管道一样,套接字也有两种模式,套接字一般用于两个进程之间的网络通信,网络套接字需要来自诸如TCP(传输控制协议)或较低级别UDP(用户数据报协议)等基础协议的支持 。
推荐阅读
- .so Linux下动态库和静态库(.a) 的区别
- Linux中/etc/passwd配置文件详解
- linux后台开发中避免僵尸进程的方法总结
- 用 testdisk 恢复 Linux 上已删除的文件
- 使用 GNU bc 在 Linux Shell 中进行数学运算
- 谈谈如何学习Linux
- Redis源码剖析之SDS
- 如何获取Linux或者macOS系统版本相关信息
- linux异步IO编程实例分析
- Linux和Windows两种风格的操作系统,创建线程的方式有何不同?