Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1800766
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: 系统运维

2012-03-28 12:48:01

对内核来说,所有打开的文件都能用文件描述符来引用。一个文件描述符是一个非负整数。当我们打开一个已经存在的文件或创建一个新的文件,内核会返回一个文 件描述符给进程。当我们想读或者写一个文件时,我们用open或create返回的文件描述符来标识这个文件,作为read或write的参数。


根据协定,UNIX系统外壳把文件描述符0与一个进程的标准输入关联,文件描述符1与标准输出关联,而文件描述符2与标准错误关联。这个协定被各个外壳以及很多应用程序使用。它不是UNIX内核的特性。尽管如此,如果这些相联没有的话,许多程序都会崩溃。


在POSIX程序里,魔数0、1和2应该用符号常量STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO代替。这些常量在时定义。


文件描述符的取值范围从0到OPEN_MAX。早期的UNIX系统实现有19的上限,允许每个进程最多打开20个文件,但是许多系统把这个限量增加为63。


在FreeBSD 5.2.1、Mac OS X 10.3和Solaris 9,这个限量本质上是无限的,由系统内存量、整型大小和任何由系统管理员配置的软硬限量来界定。Linux 2.4.22对每个进程 的文件描述符数量给了一个硬性限量1,048,576。

阅读(611) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~