这段重定向的代码有什么问题:
/* redirect the stdout */
1. const char *tempfile = "temp";
2. fd_t fd = open (tempfile, O_CREAT | O_RDWR | O_TRUNC, 0777);
3. fd_t back = dup (STDOUT_FILENO);
4. dup2 (fd, STDOUT_FILENO);
5. printf...
6. printf ("\n");
7. dup2 (back, STDOUT_FILENO);
8. close (fd);
9. close (back);
1. 在第7行之前需要增加fflush(stdout). 因为你重定向标准输出到一个文件,文件默认的缓冲方式是全缓冲。在你
将stdout设置回来之前,需要将数据冲洗到文件当中。
2. 如果这个块会被多次调用呢? 需要在第4行之前再一次冲洗缓冲区。
在重定向某个文件之前,一定要将与它关联的FILE对象进行冲洗。
阅读(2893) | 评论(0) | 转发(0) |