📄 testfifo.c
字号:
/*********************************************** * Simple pipe demo program for linuxforum.net * * Edward Jiang <edward.jiang@oracle.com> * July 17, 2001 ***********************************************/#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#define BUFFERSIZE 1024int main(int argc, char *argv[]){ int fdp[2], rdfd, wtfd; int r, pid; unsigned char buffer[BUFFERSIZE]; if (argc != 3) { fprintf(stderr, "Usage: %s <input_file> <output_file>\n",argv[0]); exit(-1); } if ((r = pipe(fdp))<0) { perror("Open pipe error"); exit(-2); } if ((rdfd = open(argv[1], O_RDONLY)) < 0) { perror("Read file error"); exit(-3); } if ((wtfd = open(argv[2], O_CREAT | O_WRONLY | O_TRUNC)) < 0) { perror("Write file error"); exit(-4); } if ((pid = fork())>0) { close(wtfd); close(fdp[0]); while ((r = read(rdfd, buffer, BUFFERSIZE)) > 0) { write(fdp[1], buffer, r); } close(rdfd); close(fdp[1]); waitpid(pid, NULL, 0); printf("Parent process exit\n"); exit(0); } else if (pid == 0) { close(rdfd); close(fdp[1]); while ((r = read(fdp[0], buffer, BUFFERSIZE)) > 0) { write(wtfd, buffer, r); } close(wtfd); close(fdp[0]); printf("Child process exit\n"); _exit(0); } else { perror("Fork error"); exit(-5); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -