为什么要复制文件描述符
if (-1 != (fd = open("/dev/null", O_WRONLY))) {
close(STDOUT_FILENO);
dup2(fd, STDOUT_FILENO);
close(fd);
}
这段代码中为什么要复制一个文件描述符?
[解决办法]
为了把标准输出重定向到/dev/null, 但是这个程序有两个问题
1. 如果 fd 等于 STDOUT_FILENO, 就不应该close(fd)
2. close(STDOUT_FILENO);是多余的,dup2内部会close的。
[解决办法]
int dup2(int oldfd, int newfd);//dup2() makes newfd be the copy of oldfd, closing newfd first if necessary