云计算百科
云计算领域专业知识百科平台

进程间通信(IPC机制):无名通道与有名通道

IPC 进程间通信 interprocess communicate

三大类:

(同一主机进程间通信)

1、古老的通信方式

        无名管道

        有名管道

        信号

2IPC对象通信 system v

        共享内存*

        消息队列

        信号量集

(主要用在不同主机进程间通信)

3socket通信

        网络通信

1.无名通道

无名管道: 只能用在具有亲缘关系的进程间通信(父子进程)。

操作流程:

1. 创建并打开管道 :pipe()

2. 读管道:read();

3. 写管道:write();

4. 关闭管道:close();

int pipe(int pipefd[2]);
功能:创建并打开一个无名管道
参数:
pipefd:管道读端和写端的文件描述符
pipefd[0] 读端
pipefd[1] 写端
返回值:
成功:0
失败:-1

管道的特点:

管道本质是内核中的一段缓冲区,默认64K字节,遵循队列存储方式(FIFO)。

1. 写阻塞:当管道的读写端都存在时,管道写满数据时,发生写阻塞。

2. 读阻塞:当管道的读写端都存在时,管道为空时,读管道发生读阻塞。

3. 读返回0:当管道没有写端,只有读端时,管道中有数据则读出数据,无数据时,不再读阻塞,读管道直接返回0字节。

4. 管道破裂:当管道没有读端,向管道中写数据,发生管道破裂异常。

2.有名管道

有名管道: 可以用在同一主机,任意进程间通信。

1. 创建有名管道文件: mkfifo();

2. 打开管道文件 :open();

3. 写管道文件:write();

4. 读管道文件:read();

5. 关闭管道文件:close();

赞(0)
未经允许不得转载:网硕互联帮助中心 » 进程间通信(IPC机制):无名通道与有名通道
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!