首页 > 技术文章 > Linux 进程间通信

yangwenhuan 2020-02-03 20:09 原文

进程间通信(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。

 

推荐阅读