IPC-管道

 内容提要:

 1.管道简介

  Unix中的进程间通信方式之一是通过管道实现的,管道分为有名管道和无名管道,对于有名管道FIFO,可以实现没有亲缘关系的进程间通信,而对于无名管道,可以实现父子进程间的通信。

管道这种IPC存在的意义是为了实现进程间消息的传递。无名管道是Unix最初的IPC形式,但是由于无名管道的局限性,后来出现了有名管道FIFO,这种管道由于可以在文件系统中创建一个名字,所以可以被没有亲缘关系的进程访问。

管道打开后的标识是以文件描述符的形式提供的,可以使用Unix系统中的read和write系统调用访问。

  管道的实现形式有多种,在一些系统中,管道被实现为全双工的,在管道的一端既可以读也可以写,但是Posix.1和Unix 98只要求半双工管道,在Linux系统中,管道是半双工的。

IPC类型

持续性

用于打开或创建IPC的名字空间

IPC打开后的标识

fork, exec和exit对IPC对象的影响

fork

exec

_exit

管道

随进程

没有名字

描述符

子进程取得父进程的所有打开着的描述符的副本

所有打开着的描述符继续打开着,除非已经设置描述符的FD_CLOEXEC位

关闭所有打开着的描述符,最后一个关闭时删除管道或FIFO中残留的所有数据

FIFO

路径名

  Unix中的无名管道是通过 pipe 函数创建的,该函数创建了一个半双工的管道。

1   #include <unistd.h>2 3   int pipe(int fd[2]);4 5   返回值:成功返回0,,出错返回-1分明是比谁记的都清楚,比谁都更加在意,

IPC-管道

相关文章:

你感兴趣的文章:

标签云: