pipe

pipe(建立管道)

相关函数:mkfifo,popen,read,write,fork

表头文件:#include <unistd.h>

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

函数说明:pipe()会建立管道,并将文件描述词由参数filedes数组返回。filedes[0]为管道里的读取端,filedes[1]则为管道的写入端。

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

错误代码:EMFILE 进程已用完文件描述词最大量。 ENFILE 系统已无文件描述词可用。 EFAULT 参数filedes数组地址不合法。

范例:

/* 父进程借管道将字符串"hello!\n"传给子进程并显示 */
#include <unistd.h>
main()
{
    int filedes[2];
    char buffer[80];
    pipe(filedes);
    if (fork() > 0)
    {
        /* 父进程 */
        char s[] = "hello!\n";
        write(filedes[1], s, sizeof(s));
    }
else
{
    /* 子进程 */
    read(filedes[0], buffer, 80);
    printf("%s", buffer);
}
}

执行: hello!