1.进程之间的通信方式有哪些? ● 管道(Pipe):管道是一种用于父子进程之间单向通信的机制。它本质上是一个文件,允许一个进程的输出成为另一个进程的输入。管道有两种类型: ○ 匿名管道:只能用于父子进程或兄弟进程之间,不能跨越不同的终端或会话。 linux 中用的管道符 ○ 命名管道(FIFO):可以在任意进程之间使用,不限于父子进程. 在 linux 中一切都是文件的理念下面,管道也是一种文件,常用 | 管道符来连接两个操作,上一个进程的输出作为另一个进程的输入。 ● 消息队列:消息队列允许不同进程之间按照一定的顺序交换消息。它在内核中维护一个队列,进程可以将消息发送到队列中,其他进程可以从队列中读取消息。它支持异步通信,并且可以用于跨进程或跨主机的通信。 常用的一些消息队列,如 rocketmq、kafa。 ● 套接字(Socket):套接字是用于不同主机之间或同一主机上不同进程之间通信的一种机制。它可以通过网络进行数据传输,支持全双工通信。常见的类型包括: ○ TCP/IP套接字:用于可靠的网络通信。 ○ UDP套接字:用于不可靠的网络通信。 ● 比如静态的常量,一些静态的数据结构,在内存***享一些数据 ● 共享内存:共享内存是将一块内存区域映射到多个进程的虚拟地址空间中,使得这些进程可以直接访问这块共享内存区域。这种方式允许进程之间高效地交换数据,但需要同步机制(如信号量)来避免数据竞争。 ● 信号(Signal):信号是一种简单的进程间通信方式,用于通知某个进程发生了某些事件。例如,进程可以通过发送信号来中断另一个进程或告知某个操作已完成。