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;
    }                                        

    运行结果:

     

     

     

     

     

     

  • 相关阅读:
    项目遇到的坑
    知乎贺老live
    cookie
    Vue之不常注意的点
    移动端适配问题
    ubuntu之nginx的安装
    Http相关笔记
    如何使用Augury检查Angular 8中的延迟加载
    Serilog——一个集成了。net应用程序的优秀日志框架
    引导HTML助手
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/8024819.html
Copyright © 2011-2022 走看看