【发布时间】:2012-08-09 15:50:57
【问题描述】:
我一直在使用dup 和freopen 将stdout 重新路由到如下文件:
fflush(stdout);
fgetpos(stdout, &pos);
fd = dup(fileno(stdout));
freopen("stdout.out", "w", stdout);
我想做的是将它重新路由到char[],以便我可以操纵它。显然这在使用printf 编写时不是很有用,但是当使用写入stdout 的库时,在代码中获取输出会很有帮助,以便我可以在必要时对其进行操作。
【问题讨论】:
-
为什么无法将文件读入内存?
-
@user315052 写入文件然后立即从该文件读取似乎是一个额外的步骤。输出不能直接发送到
char[]吗? -
没有 API 可以将
stdout更改为内存流。 GNU 的 libc 提供了fmemopen和open_memstream,但是它们会创建新的流,并且没有接口可以让一个流替换现有的流。 -
这是您问题的镜像版本:stackoverflow.com/questions/1558772/…