请问,我讲stdout定义到了文件之后,想要返回Xocde的控制台重新在console里输出第二个hello用什么语法可以回来?
freopen("/dev/tty/", "a", stdout);已经试过了但是没有反应。
在此之前已经搜过很多地方了,实在不知道该怎么解决了,第一次提问。多谢各位大佬了。?
请问,我讲stdout定义到了文件之后,想要返回Xocde的控制台重新在console里输出第二个hello用什么语法可以回来?
freopen("/dev/tty/", "a", stdout);已经试过了但是没有反应。
在此之前已经搜过很多地方了,实在不知道该怎么解决了,第一次提问。多谢各位大佬了。?
3 回答1.6k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
2 回答2.5k 阅读
1 回答1.1k 阅读✓ 已解决
2 回答569 阅读✓ 已解决
1 回答2.1k 阅读
3 回答1.2k 阅读
参考这篇文章
Once I've used freopen, how can I get the original stdout (or stdin) back?
如果需要还原stdout,其实不推荐使用freopen,推荐的做法是
使用一个文件指针
FILE *ofp
把所有的
printf( ... )
替换成fprintf(ofp, ... )
然后你可以把ofp指向文件、指向stdout、等等。
注意,尝试用文件指针去保存stdout,是错误的。因为通常stdout会包含无法再分配的内容。(stdin和stderr也同样)
另一种解决方案,使用dup or dup2
(以下代码转载自http://c-faq.com/stdio/rd.kir...)