zoukankan      html  css  js  c++  java
  • 管道相关函数(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
    ", 12);
            wait(NULL);
        } else { /* child */
            close(fd[1]);
            n = read(fd[0], line, MAXLINE);
            write(STDOUT_FILENO, line, n);
        }
        return 0;
    }                                        

    运行结果:

     

     

     

     

     

     

  • 相关阅读:
    Day015 PAT乙级 1013 数素数
    Day014 PAT乙级 1012 数字分类
    Day013 PAT乙级 1007 素数对猜想
    Day012 PAT乙级 1005 继续(3n+1)猜想
    Day011 PAT乙级 1003 我要通过
    Day010 PAT乙级 1002 写出这个数
    Day009 洛谷 P5707 上学迟到
    Day008 洛谷 P2181 对角线
    Day007 Java异常处理
    Fetch()
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/8024819.html
Copyright © 2011-2022 走看看