参考:​​Linux系统编程之FIFO通信​

写fifo

#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

#define ERR_EXIT(m)\
do\
{\
perror(m);\
exit(EXIT_FAILURE);\
}while(0)

int main()
{
int infd;
int outfd;
char buf[1024];
int n;

mkfifo("tp.c", 0644);//创建命名管道文件
infd = open("1.c", O_RDONLY);
if(infd == -1)
ERR_EXIT("open");

outfd = open("tp.c", O_WRONLY);
if(outfd == -1)
ERR_EXIT("open");

while((n = read(infd, buf, 1024)) > 0)//读取文件内容到buf上
{
write(outfd, buf, n);//变量内容写到管道文件中
}

close(infd);//关闭读操作
close(outfd);//关闭写操作

return 0;
}

读fifo

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

#define ERR_EXIT(m)\
do\
{\
perror(m);\
exit(EXIT_FAILURE);\
}while(0)

int main()
{
int infd;
int outfd;
int n;
char buf[1024];

outfd = open("1.c.bak",O_WRONLY | O_CREAT | O_TRUNC, 0644);
if(outfd == -1)
ERR_EXIT("open");

infd = open("tp.c",O_RDONLY);
if(outfd == -1)
ERR_EXIT("open");

while((n = read(infd,buf,1024)) > 0)
{
write(outfd,buf,n);
}

close(infd);
close(outfd);
unlink("tp.c");

return 0;
}