进程间通信
进程间通信IPC。内核开辟的缓冲区,进程A将数据写入内核缓冲区,进程B从内核缓冲区读取数据。
管道pipe
内核中的一段缓冲区。队列实现。单工通信。用于解决有血缘关系的进程间通信。
int fd[2]; //fd[0]读端,fd[1]写端
pipe(fd);
- 创建管道。管道读端,管道写端。占用2个文件描述符。
- fork创建子进程。
- 确定通信方向。
– 子写父读。关闭父写,关闭子读。
– 父写子读。关闭父读,关闭自写。
FIFO有名管道
解决有血缘关系进程通信。
mkfifo();
内存共享映射
将磁盘文件映射到内存。之后通过指针即可修改文件。不需要read/write等函数。
mmap/munmap
unix domain socket
主机socket