在我的c ++应用程序中,我正在调用一些其他第三方API来生成控制台输出/错误消息。我想将所有这些消息重定向到我的应用程序的日志,以便用户的屏幕只显示我的应用程序的消息,并且没有填充来自第三方模块的无关消息。 有没有办法这样做。我不确定,但第三方API正在使用c / c + _ libraries
由于 Ruchi
答案 0 :(得分:0)
如果您自己不使用标准输出文件描述符,则可以执行以下操作:
int newout = dup(1);
int log = open("./my.log", O_RDWR|O_CREAT, 777);
dup2 (log, 1);
现在标准输出(描述符1)转到“./my.log”,新的文件描述符转到以前的标准输出。
如果您使用Unix低级别IO(例如write(2)
),则可以直接使用newout
。如果你使用C stdio,fdopen(3)
它。如果您更喜欢C ++流,请查看at this question and its answers。