你需要知道的那些文件描述符

目录 技术

什么是文件描述符:

  • 内核利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。
  • 每一个进程在内核中,都对应有一个“打开文件”数组,存放指向文件对象的指针,而 fd 是这个数组的下标。
  • 我们对文件进行操作时,系统调用,将fd传入内核,内核通过fd找到文件,对文件进行操作。

既然是数组下标,fd的类型为int, < 0 为非法值, >=0 为合法值。在linux中,一个进程默认可以打开的文件数为1024个,fd的范围为0~1023。可以通过设置,改变最大值。
在linux中,值为0、1、2的fd,分别代表标准输入、标准输出、标准错误输出。因为 0 1 2已经被linux使用了,通常在程序中打开的fd,是从3开始的。但我们在判断一个fd是否合法时,依然要使用>=0的判断标准。
fd的分配原则,是从小到大,找到第一个不用的进行分配。除了open之外, socket编程的socket()/accept()等函数,也会返回一个fd值。

查看文件描述符:

  • Linux系统下,所有进程允许打开的最大fd数量。查询语句:
  • Linux系统下,所有进程已经打开的fd数量及允许的最大数量。查询语句:
  • 单个进程允许打开的最大fd数量.查询语句:
  • 单个进程已经打开的fd.查询语句:
  • 暂无评论

    发表评论

    电子邮件地址不会被公开。