原理:根据管道和重定向完成模拟实现
client文件的代码
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
int main()
{
int fifo = mkfifo("file",0664);
if(fifo<0)
{
perror("mkfifo");
return 1;
}
int fd = open("file",O_WRONLY);
if(fd<0)
{
perror("open");
return 2;
}
char buf[1024];
while(1)
{
printf("Please input:\n");
fflush(stdout);
ssize_t s = read(0,buf,sizeof(buf));
if(s>0)
{
buf[s] = '\0';
write(fd,buf,sizeof(buf));
}
else
break;
}
close(fd);
return 0;
}
server文件代码
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd = open("file",O_RDONLY);
if(fd<0)
{
perror("open");
return 1;
}
char buf[1024];
while(1)
{
ssize_t s = read(fd,buf,sizeof(buf));
if(s>0)
{
buf[s] = '\0';
printf("client success!\n");
printf("%s",buf);
}
else
break;
}
close(fd);
return 0;
}
Makefile文件
.PHONY:all
all:client server
client:client.c
gcc -o $@ $^
server:server.c
gcc -o $@ $^
.PHONY:clean
clean:
rm -f client server
最终效果

在client输出的消息可以同步显示到server中,模拟完成。