如何将stdin、stdout、stderr重定向到/dev/null
网上有这样描述的.
close( 0 );
close( 1 );
close( 2 );
open( "/dev/null", O_RDWR );
dup( 0 );
dup( 0 );
我用到的, 由于某程序向stderr中打印了大量信息,我需要把它代码中的stderr重定向为空.
下面给一个实例,
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
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 %d\n",fd); //此时fd = 2
printf("hello\n");
fprintf(stderr, "hello 2\n"); // 该语句将不会被打印!! 这是想要的结果.
return 0;
}