首页
登录 | 注册

标准输出重定向

这段重定向的代码有什么问题:

    /* 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对象进行冲洗。




相关文章

  • 一.BASH的基本语法 1.1.最简单的例子 -- Hello World!         用 vi 编辑器编辑一个 hello 文件如下: #!/bin/bash # This is a very simple example echo ...
  • 在linux系统下如何使一个程序在后台一直执行呢?很多人使用&结尾的命令形式,但是如果没有守护进程的话,即使这样,在终端关闭时程序也会终止运行.这时候就得使用nohup命令了.   例如,如果在终端中执行Java -jar xxx. ...
  • spice服务端: 所需软件包:celt-0.5.1.3.tar.gz.qemu-2.9.1.tar.xz.spice-0.12.8.tar.bz2.spice-protocol-0.12.13.tar.bz2.usbredir-0.7.1 ...
  • 《循序渐进Linux》第二版即将出版发行(附封面)
    从<循序渐进Linux>第一版发布,到现在已经近6年了,6年的时间,技术发生了很大的变化,Linux系统的内核版本从2.6.9(RHEL4.x)已经更新到了现在的3.10(Centos7.x),第一版中的部分内容已经陈旧,Lin ...
  • linux特殊符号大全 在shell中常用的特殊符号罗列如下: #   ;   ;;      .      ,       /       \       'string'|       !   $   ${}   $?      $$  ...
  • Ubuntu linux下安装sqlite3 1.介绍:sqlite3是linux上的小巧的数据库,一个文件就是一个数据库. 2.安装: 要安装sqlite3,可以在终端提示符后运行下列命令: sudo apt-get install sq ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
京ICP备10005923号