有名管道

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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容