把行信息打印到stdio窗口,然后再有一行到文件,接着又有一行到stdio屏幕。
先来看一个错误的例子
#include <ansi_c.h>
int main (int argc, char *argv[])
{
FILE *copy;
printf ("This is printed to screen!\n");
copy = stdout;
stdout = fopen ("stdio test.txt", "w");
printf ("This is printed to a file!\n");
fclose (stdout);
stdout = copy;
printf ("Where is this line?\n");
return 0;
}
类似于copy = stdout;直接的赋值是不可行的,应该要用dup,dup2,正确的应该是下面这样的
#include <stdio.h>
#ifdef unix
#include <unistd.h>
#endif
#ifdef WIN32
#include <io.h>
#define fileno _fileno
#define dup2 _dup2
int main (int argc, char *argv[])
{
FILE *copy;
int bak_out = dup(1);// can use fileno(stdout) to repl

本文探讨了在Windows和Linux环境下如何实现printf的输出重定向,包括在多线程环境中如何管理和恢复输出流,以便在不同线程间控制打印信息的目的地。
最低0.47元/天 解锁文章
4447

被折叠的 条评论
为什么被折叠?



