- 姓名:施旭轩
- 学号:201822121062
- 班级:计算1812
一、编写程序
在服务器上用Vim编写程序:创建一个命名管道,创建两个进程分别对管道进行读fifo_read.c
和写fifo_write.c
。给出源代码。
#include<stdio.h> #include<sys/types.h> #include<stdlib.h> #include<unistd.h> #include<string.h> #include<sys/stat.h> #include<fcntl.h> char writebuffer[200]; int main() { int m = mkfifo("fifo",0777); if(m<0) { printf("mkfifo fails.\n"); return -1; } printf("mkfifo success.\n"); return 0; }
fifo_write.c源代码
#include<stdio.h> #include<sys/stat.h> #include<string.h> #include<fcntl.h> #include<unistd.h> #include<sys/types.h> int main() { int fd = open("fifo",O_WRONLY); if(fd == -1) { perror("mefifo"); return -1; } char buf[1024]; while(1) { fgets(buf,1024,stdin); write(fd,buf,strlen(buf)); } return 0;
fifo_read.c源代码:
#include<stdio.h> #include<unistd.h> #include<sys/stat.h> #include<sys/types.h> #include<string.h> #include<fcntl.h> int main() { int fd = open("fifo",O_RDONLY); if(fd == -1) { perror("mkfifo"); return -1; } char buf[1024]; while(1) { int ret = read(fd,buf,1024); buf[ret] = '\0'; printf("读取到:%s\n",buf); } return 0; }
二、运行结果
开启两个服务器分别打开读fifo_read和写fifo_write,在write中输入的结果可以在read中读取出来。