进程间通信(IPC,Inter Process Communication)
1、管道,包含匿名管道和命名管道。
1)匿名管道(pipe)
1.1)半双工,数据只能单向流动。
1.2)只能在有亲缘关系的进程间(fork系统调用)使用。
1.3)传输无格式的字节流,并且缓冲区大小受限。
1.4)应用于Linux命令行,即“|”,可以让前一个命令的输出作为后一个命令的输入。
// 创建匿名管道 int pipe(int filedes[2]);
2)命名管道(fifo)
2.1)可以在无亲缘关系的进程间使用。
// 创建命名管道 int mkfifo(const char* pathname, mode_t mode);
2、信号量(semophore)
用于多进程同步访问共享资源。
3、共享内存(shared memory)
多进程共享同一片内存(每个进程都有自己独立的进程内存空间),是最快的IPC。通常结合其他IPC,如信号量,来实现多进程同步。
4、消息队列(message queue)
消息的链表。传输有格式的消息。
5、套接字(socket)
可用于不同机器间的IPC。