先上代码再解释:
-
#include <stdio.h>
-
#include <fcntl.h>
-
#include <sys/types.h>
-
#include <sys/stat.h>
-
#include <linux/limits.h>
-
-
int main(){
-
int i;
-
//关闭所有已经打开的文件(这样就能释放并回收然后重用文件描述符)
-
for(i=0;i<NR_OPEN;i++){
-
close(i);
-
}
-
//重定向标准输入到 /dev/null,因为此时open返回的fd 是 0
-
open("/dev/null",O_RDWR);
-
//重定向标准输出到 /dev/null,因为此时open返回的fd 是 1
-
open("/dev/null",O_RDWR);
-
//重定向标准出错到 /dev/null,因为此时open返回的fd 是 2
-
open("/dev/null",O_RDWR);
-
return 0;
-
}
注意:NR_OPEN 这个常量定义在 linux/limits.h 这个头文件中,而在另一个头文件 linux/fs.h 中又把 NR_OPEN 给 undef 了,所以如果再 include了 linux/fs.h ,则会出现 NR_OPEN 未定义的错误,所以这里只要 include 进 linux/limits.h 这个头文件就行了。
阅读(1490) | 评论(0) | 转发(0) |