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;