ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 进程间通信 IPC全称Interprocess Communication,指进程间协作的各种方法,当然包括共享内存,信号量或Socket等。 ## 管道(Pipe) 管道是进程间通信最简单的方式,任何进程的标准输出都可以作为其他进程的输入。 ## 信号(Signal) 信号是进程间通信的其中一种方法,当然也可以是内核给进程发送的消息 注意信息只是告诉进程发生了什么事件,而不会传递任何数据 ### 信号种类 ``` kill -l HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2 ``` - 其中1至31的信号为传统UNIX支持的信号,是不可靠信号(非实时的) - 32到63的信号是后来扩充的,称做可靠信号(实时信号) - 不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会 - Ctrl+c,这就是发送SIGINT信号 - kill命令默认是SIGTERM,加上`-9`参数才是SIGKILL ## 消息队列(Message) 和传统消息队列类似,但是在内核实现的。 ## 共享内存(Shared Memory) 后面也会有更详细的介绍。 ## 信号量(Semaphore) 信号量本质上是一个整型计数器,调用`wait`时计数减一,减到零开始阻塞进程,从而达到进程、线程间协作的作用。 ## 套接口(Socket) 也就是通过网络来通信,这也是最通用的IPC,不要求进程在同一台服务器上。