首先编写utili.h
#ifndef _UTILI_H
#define _UTILI_H
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#define BUFFER_MAX_SIZE 256
const char *write_fifo_name = "write_fifo";
const char *read_fifo_name = "read_fifo";
char sendbuf[BUFFER_MAX_SIZE];
char recvbuf[BUFFER_MAX_SIZE];
#endif
编写服务器端ser.c
#include"utili.h"
int main()
{
int ret = mkfifo(write_fifo_name, O_CREAT|0755);
if(ret == -1)
{
perror("mkfifo.");
exit(1);
}
int write_fd = open(write_fifo_name, O_WRONLY);
if(write_fd == -1)
{
perror("open write fifo.");
exit(1);
}
int read_fd;
while((read_fd = open(read_fifo_name, O_RDONLY)) == -1);
{
sleep(1);
}
while(1)
{
printf("Ser: >");
scanf("%s",sendbuf);
write(write_fd, sendbuf, strlen(sendbuf)+ 1);
read(read_fd,recvbuf, BUFFER_MAX_SIZE);
printf("Cli: > %s\n",recvbuf);
}
close(write_fd);
close(read_fd);
return 0;
}
编写客户端cli.c
#include"utili.h"
int main()
{
int read_fd = open(write_fifo_name, O_RDONLY);
if(read_fd == -1)
{
perror("open write fifo.");
exit(1);
}
int ret = mkfifo(read_fifo_name, O_CREAT|0755);
if(ret == -1)
{
perror("mkfifo.");
exit(1);
}
int write_fd = open(read_fifo_name, O_WRONLY);
if(write_fd == -1)
{
perror("open read fifo");
exit(1);
}
while(1)
{
read(read_fd,recvbuf, BUFFER_MAX_SIZE);
printf("Ser: > %s\n",recvbuf);
printf("cli: >");
scanf("%s",sendbuf);
write(write_fd, sendbuf, strlen(sendbuf)+ 1);
}
close(write_fd);
close(read_fd);
return 0;
}
下面是在Linux环境下的运行结果: