Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74754
  • 博文数量: 28
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 291
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-29 14:47
文章存档

2014年(13)

2013年(15)

我的朋友

分类: C/C++

2013-12-16 14:42:28

对于内核而言,所有打开文件都由文件描述符引用。当打开一个现存文件或创建一个
新文件时,内核向进程返回一个文件描述符。
当读,写一个文件时,用open或creat返回的文件描述符标识该文件,将其作为参数传给read或write。
UNIX shell使文件描述符0与进程的标准输入相结合,文件描述符1与标准输出相结合,文件描述符2与标准
出错输出相结合。这是UNIX shell以及很多应用程序使用的惯例,而与内核无关。
在POSIX.1应用程序中,幻数0,1,2应被代换成符号常数STDIN_FILENO,STDOUT_FILENO和STDERR_FILENO 头文件
文件描述符的范围是0~OPEN_MAX.早期版本采用上限值是19(允许每个进程打开20个文件)。现在很多系统增加至63.
SVR4和4.3+BSD对文件描述符的变化范围没有作规定,它只受到系统配置的存储器的总量,整型字的字长以及系统管理员所配置的
软性或硬性限制的约束。
void inout()
{
  char buf[8192];
  int n;
  while((n=read(STDIN_FILENO,buf,8192))>0) //等待接收输入
  {
   if(write(STDOUT_FILENO,buf,n)!=n)   //这就是标准输出啊
     exit(1);
  }
  if(n<0)
    printf("error");
}
阅读(1029) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~