【发布时间】:2011-08-19 18:08:12
【问题描述】:
我有一个程序打印(通过 printf)到 stdout 一些数据,还调用函数 *foo*
它还打印到stdout 一些数据[如何从 foo 完成打印的方式(实现)是未知的,我看不到 foo 的代码]。
我必须将所有内容从 stdout 重定向到 buffer 或文件。我尝试了几种方法
-
freopen(file.txt, stdout)- 只有我的代码打印被写入 file.txt。从 foo 打印的内容丢失了。 -
setbuf(buffer, stdout)- 只有我的代码打印被写入缓冲区。从 foo 打印的内容出现在标准输出中。(它出现在屏幕上)
什么可以解释这种行为?问题如何解决?
注意:此代码必须在跨操作系统(lunux/wind && mac OS)中工作。我使用 gcc 来编译代码,我有 cygwin
【问题讨论】:
-
您必须在 C 中执行此操作吗?一个简单的 bash 脚本可以只获取标准输出并将其写入文件。
-
对...你能看到 foo 的打印输出吗?通过什么机制?
-
@brc - 是的。当我不使用“重定向”时,我知道从 foo 打印的内容