管道相关函数(1)-pipe

定义:

int pipe(int filedes[2]);

 

表头文件:

#include<unistd.h>

 

说明:

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

 

返回值:

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

 

相关函数:

mkfifo, popen, read, write, fork

 

错误代码:

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

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

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

 

示例:

 

#include <stdlib.h>
#include <unistd.h>
#define MAXLINE 80
int main(void)
{
    int n;
    int fd[2];
    pid_t pid;
    char line[MAXLINE];
    if (pipe(fd) < 0) {
        perror("pipe");
        exit(1);
    }
    if ((pid = fork()) < 0) {
        perror("fork");
        exit(1);
    }
    if (pid > 0) { /* parent */
        close(fd[0]);
        write(fd[1], "hello world\n", 12);
        wait(NULL);
    } else { /* child */
        close(fd[1]);
        n = read(fd[0], line, MAXLINE);
        write(STDOUT_FILENO, line, n);
    }
    return 0;
}                                        

运行结果:

 

 

 

 

 

 

posted @ 2017-12-11 20:04  夜行过客  阅读(543)  评论(0编辑  收藏  举报