Linux下的无名管道pipe的设计

2014-11-24 01:01:06 · 作者: · 浏览: 6

1. 函数说明


pipe(建立管道):


1) 头文件 #include


2) 定义函数: int pipe(int filedes[2]);


3) 函数说明: pipe()会建立管道,并将文件描述词由参数filedes数组返回。


filedes[0]为管道里的读取端


filedes[1]则为管道的写入端。


4) 返回值: 若成功则返回零,否则返回-1,错误原因存于errno中。


错误代码:


EMFILE 进程已用完文件描述词最大量


ENFILE 系统已无文件描述词可用。


EFAULT 参数 filedes 数组地址不合法。


示例:


无名管道的创建是在fork创建前,通过pipe()创建管道,然后通过fork创建子进程,之后,子进程会拷贝父进程的代码段/数据段及堆栈段,因此,创建的管道会被复制一份,子进程一份,父进程一份,为了使管道正常通讯,必须处理已有管道。