|
管道的建立和使用2.2.1管道功能 #包括intpipe(intfd[2]) 函数参数中有两个文件描述符:FD[0]表示管道的读取端,FD[1]表示管道的写入端。如果创建成功,将返回值0,否则将返回值-1。 2.2.2写流水线写功能 ret=写入(fd[1],buf,n) 如果管道已满,它将被阻塞,直到在管道另一端读取已进入管道的数据。 2.2.3读取管道读取函数RET=read(FD[0],buf,n) 如果管道为空且写入结束文件描述符未关闭,则会阻止该管道。如果管道写入端已关闭,则返回0。如果管道不为空,则有两种情况:(设置管道中实际有m个字节)。如果n>=m,读取m字节;如果n<m,读取n字节。实际读取数是读取的返回值。 2.2.4关闭功能 关闭write end导致read end的read调用返回0;关闭read end导致write end的write调用返回-1,errno设置为eppe。在write end的write函数退出之前,进程将接收SIGPIPE信号(默认处理是终止进程,可以捕获)。 2.2.5复制文件描述符dup2 intdup2(intfdl,intfd2); 将文件描述符FDL复制到fd2。Fd2可以是空闲文件描述符。如果fd2是打开的文件,请关闭fd2。如果FD1不是有效的描述符,请不要关闭fd2。呼叫失败。 |