pipe函数、read函数和write函数

  • Post author:
  • Post category:其他


pipe:

   #include <unistd.h>
   int pipe(int pipefd[2]);

创建一个管道,一个单向数据通道。pipefd[0]表示管道的读取端。pipefd[1]是指管道的写端。

read:

   #include <unistd.h>
  ssize_t read(int fd, void *buf, size_t count);

简单来说就是从文件描述符fd中读取count字符给buf

write():

跟read是一样的道理。

#include <unistd.h>

#include <stdio.h>

#include <sys/types.h>

#include <sys/wait.h>

int main(void)

{

    int fd[2];
    int ret;
    pid_t pid;

    ret = pipe(fd);
    if(ret == -1)
    {
            perror("Error");
    }

    pid = fork();
    if(pid == -1)
    {
            perror("Error");
    }
    else if(pid == 0)
    {
            char ch[2];
            close(fd[1]); //关闭写通道
            while(1)
            {
                    read(fd[0], ch ,2);
                    printf("read from pipe: %s\n",ch);
            }
    }
    else
    {
            close(fd[0]);//关闭读管道

            sleep(5);
            write(fd[1], "xyabdc", 6);
            waitpid(pid, NULL, 0);
    }
    return 0;

}



版权声明:本文为qq_44957435原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。