繁体   English   中英

C ++重定向输出

[英]C++ Redirect Output

有没有办法在代码中重定向c ++输出? 情况就是这样,我正在使用一些外部的.cpp和.h文件,这些文件使用printf来向控制台发出警告。 我希望将“仅”这些输出(不是我的)重定向到“不”修改其代码的文件。

所以; 在我的程序中,我可以将输出重定向到一个文件,当我将一些输出重定向再次发送到默认控制台,然后再将其重新导入文件,等等......

可能吗?

您可以在stdout上使用freopen()将stdout重定向到文件。

printf将打印到文件描述符1,你可以关闭它并打开一个文件,这将给你另一个fd,可能是1,因为它是最低的可用fd,如果不是你不够快。

如果你只是close(1); 然后int fd = open(file); 如果在关闭和打开之间没有打开任何东西,fd应为1。 此时输出到fd编号1的任何人都将打印到您的文件。

这是因为系统应该为您lowest available file descriptor number因此它将为您提供1,这正是printf写入的位置。

正如@roe所提到的,你可能更喜欢首先使用dup()超过1来获得另一个fd编号,你可以在其中打印到stdout。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM