有名管道

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;

你可能感兴趣的:(有名管道)