理解:有名管道类似于文件io 相当于新建一个管道文件作为中间介质 进行数据的交换(因此可以不同线程间通信)
写入管道文件
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char **argv)
{
int ret = 0;
int fd;
char buf[32];
ret=mkfifo("/myfifo",666);
if(ret<0)
{
perror("mkfifo");
//return 0;
}
fd=open("/myfifo",O_WRONLY);
if(fd<0)
{
perror("open");
return 0;
}
while(1)
{
fgets(buf,sizeof(buf),stdin);
write(fd,buf,sizeof(buf));
}
}
读取
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char **argv)
{
int ret = 0;
int fd;
char buf[32];
fd=open("/myfifo",O_RDONLY);
if(fd<0)
{
perror("open");
return 0;
}
while(1)
{
ret=read(fd,buf,sizeof(buf));
if(ret>0)
{
printf("read fifo =%s\n",buf);
}
else if(ret==0)
{
exit(0);
}
printf("read fifo=%s\n",buf);
}
}