1.打开终端输入”vim server.c”,回车
2.按下”i”键,输入代码(可复制粘贴)
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#define MAX 1024
int main()
{
if (mkfifo("./fifo", 0644) < 0) //创建命名管道,并判断是否创建成功
{
perror("mkfifo error!\n");
return 1;
}
int fd = open("./fifo", O_RDONLY); //让./fifo以只读方式打开
if (fd < 0) {
perror("read error!\n");
return 2;
}
char buf[MAX];
while (1) {
ssize_t s = read(fd, buf, sizeof(buf) - 1); //从管道中读取数据
if (s > 0) //读取成功
{
buf[s] = 0;
printf("client# %s\n", buf);
}
else if (s == 0) {
printf("client quit,server quit too!\n");
break;
}
else {
perror("read");
}
}
close(fd); //关闭读端
return 0;
}
3.代码输入完成,按”Esc”键,然后输入”:wq”命名保存代码
4.输入"vim client.c"
5.按下”i”键,输入代码(可复制粘贴)
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#define MAX 1024
int main()
{
int fd = open("./fifo", O_WRONLY); //把./fifo文件以只写方式打开
if (fd < 0) {
perror("read");
return 1;
}
char buf[MAX];
while (1) {
printf("Please Enter:> ");
scanf("%s", buf);
write(fd, buf, strlen(buf)); //往管道里面写入数据
}
close(fd); //关闭写端
return 0;
}
6.代码输入完成,按”Esc”键,然后输入”:wq”命名保存代码
7.输入“gcc -o server server.c”
8.输入"gcc -o client client.c"
9.输入“./server”
10.另外打开一个终端输入"./client"
11.在第二个终端任意输入内容回车,第一个终端会显示出来即可。