我有一个C函数可以生成输出,大概是使用printf或类似的。如何重定向输出,使其在执行该功能时不会生成,并在之后恢复?像下面的东西。
int main()
{
// disable output
c_function(); // generates output
// enable output
return 0
}
答案 0 :(得分:0)
如果您无法更改功能本身,例如通过提供额外的输出文件描述符,这应该工作:
int outfd;
int savefd;
fflush( stdout ); // make sure everything is written to 1
savefd = dup( 1 ); // dup stdout for restore
outfd = creat( "mystdout.txt", 0666 ); // create an output file
dup2( outfd, 1 ); // dup that fd to stdout
functionWithPrintf( );
fflush( stdout ); // make sure everything is written to 1
close( outfd );;
dup2( savefd, 1 );
printf( "Back again\n" );