将c函数的std输出重定向为null

时间:2014-03-20 17:47:46

标签: c redirect output

我有一个C函数可以生成输出,大概是使用printf或类似的。如何重定向输出,使其在执行该功能时不会生成,并在之后恢复?像下面的东西。

int main()
{
  // disable output
  c_function(); // generates output
  // enable output

  return 0
}

1 个答案:

答案 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" );