我想重新打开 stdin
和 stdout
(也许还有 stderr
)的文件句柄,这样以后对 printf()
、 putchar()
或 puts()
的调用就会转到一个文件,以后对 getc()
等的调用就会来自一个文件。
1)我不想永久丢失标准的输入/输出/错误,我可能想在以后的程序中重用它们。
2)我不想打开新的文件句柄,因为这些文件句柄要么需要经常传递,要么需要全局传递(不寒而栗)。
3)我不想使用任何 open()
或 fork()
或其他系统相关的功能,如果我不能帮助它。
所以基本上,这样做是否有效:
stdin = fopen("newin", "r");
如果是这样,我怎样才能得到 stdin
的原始值呢?我需要把它存在 FILE *
里,然后再拿回来吗?