如何将stdin、stdout、stderr重定向到/dev/null
网上有这样描述的.
close( 0 );
close( 1 );
close( 2 );
open( "/dev/null", O_RDWR );
dup( 0 );
dup( 0 );
我用到的, 由于某程序向stderr中打印了大量信息,我需要把它代码中的stderr重定向为空.
下面给一个实例,
#include
#include
#include
#include
int main(int argc, char *argv[])
{
(void) argc;
(void) argv;
close( 2 ); // 关闭2号文件描述符,
int fd=open( "/dev/null", O_RDWR ); // 重新打开2号文件描述符,使指向/dev/null
printf("fd is %dn",fd); //此时fd = 2
printf("hellon");
fprintf(stderr, "hello 2n"); // 该语句将不会被打印!! 这是想要的结果.
return 0;
}



