美文网首页
有名管道

有名管道

作者: 8dc010427b39 | 来源:发表于2017-02-07 14:43 被阅读0次

    shell       

    mkfifo      fifo1 [名称] 建立一个有名管道

    cat < fifo1  用cat读取有名管道fifo1数据

    ls > fifo1  把ls输出内容写到管道中


    创建管道

    int mkfifo(const char *pathname,mode_t mode);  mode_t权限 0777 0666

    if(mkfifo("fifo1",0666) == -1){

    printf("error %s\n",strerror(errno));

    return -1;

    }


    读管道数据

    int fd = open("fifo1",O_RONLY);

    if(fd == -1){

    printf("error %s\n",strerror(errno));

    return -1;

    }

    char buf[1024];

    memset(buf,0,sizeof(buf));

    read(fd,buf,sizeof(buf)); //read函数是阻塞的直到读到数据后才返回

    printf("%s\n",buf);


    向管道写数据

    int fd = open("fifo1",O_WRONLY);

    if(fd == -1){

    printf("error %s\n",strerror(errno));

    return -1;

    }

    char buf[1024];

    memset(buf,0,sizeof(buf));

    strcpy(buf,"helloworld");

    write(fd,buf,sizeof(buf)); //将buf内容写入管道

    close(fd);

    return 0;

    相关文章

      网友评论

          本文标题:有名管道

          本文链接:https://www.haomeiwen.com/subject/estmittx.html