Chinaunix首页 | 论坛 | 博客
  • 博客访问: 486176
  • 博文数量: 51
  • 博客积分: 257
  • 博客等级: 二等列兵
  • 技术积分: 1489
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-02 18:30
个人简介

Unix/Linux, mysql, web,企业应用

文章分类

全部博文(51)

文章存档

2015年(1)

2014年(1)

2013年(48)

2012年(1)

我的朋友

分类: C/C++

2013-03-28 22:46:46

先上代码再解释:
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. #include <linux/limits.h>

  6. int main(){
  7.     int i;
  8.     //关闭所有已经打开的文件(这样就能释放并回收然后重用文件描述符)
  9.     for(i=0;i<NR_OPEN;i++){
  10.         close(i);
  11.     }
  12.     //重定向标准输入到 /dev/null,因为此时open返回的fd 是 0
  13.     open("/dev/null",O_RDWR);
  14.     //重定向标准输出到 /dev/null,因为此时open返回的fd 是 1
  15.     open("/dev/null",O_RDWR);
  16.     //重定向标准出错到 /dev/null,因为此时open返回的fd 是 2
  17.     open("/dev/null",O_RDWR);
  18.     return 0;
  19. }

注意:NR_OPEN 这个常量定义在 linux/limits.h 这个头文件中,而在另一个头文件 linux/fs.h 中又把 NR_OPEN 给 undef 了,所以如果再 include了 linux/fs.h ,则会出现 NR_OPEN 未定义的错误,所以这里只要 include 进 linux/limits.h 这个头文件就行了。
阅读(4948) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~