赞
踩
在看 unix 环境高级编程 的时候,在管道这一部分,还没有看到后面的代码时,一直被一个问题困扰着。先看代码
- //15-6
- #include "apue.h"
- #include <sys/wait.h>
-
- #define DEF_PAGER "/bin/more" /* default pager program */
-
- int
- main(int argc, char *argv[])
- {
- int n;
- int fd[2];
- pid_t pid;
- char *pager, *argv0;
- char line[MAXLINE];
- FILE *fp;
-
- if (argc != 2)
- err_quit("usage: a.out <pathname>");
-
- if ((fp = fopen(argv[1], "r")) == NULL)
- err_sys("can't open %s", argv[1]);
- if (pipe(fd) < 0)
- err_sys("pipe error");
-
- if ((pid = fork()) < 0) {
- err_sys("fork error");
- } else if (pid > 0) { /* parent */
- close(fd[0]); /* close read end */
-
- /* parent copies argv[1] to pipe */
- while (fgets(line, MAXLINE, fp) != NULL) {
- n = strlen(line);
- if (write(fd[1], line, n) != n) //这里只是把 line 中的字符串写入到管道的写端。还是很正常的
- err_sys(&

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。