美文网首页嵌牛IT观察
Linux编程--文件描述符fd

Linux编程--文件描述符fd

作者: __来日方长__ | 来源:发表于2019-11-04 17:07 被阅读0次

学号:19021211263

linux中, 每一个进程在内核中,都对应有一个“打开文件”数组,存放指向文件对象的指针,而 fd 是这个数组的下标

​ 我们对文件进行操作时,系统调用,将fd传入内核,内核通过fd找到文件,对文件进行操作。

​ 既然是数组下标,fd的类型为int, < 0 为非法值, >=0 为合法值。在linux中,一个进程默认可以打开的文件数为1024个,fd的范围为0~1023。可以通过设置,改变最大值。

在linux中,值为0、1、2的fd,分别代表标准输入、标准输出、标准错误输出。在上一篇文章中,使用重定向 2>/dev/null 就是把标准错误输出重定向到位桶中去,不显示出来。因为 0 1 2已经被linux使用了,通常在程序中打开的fd,是从3开始的。但我们在判断一个fd是否合法时,依然要使用>=0的判断标准

fd的分配原则,是从小到大,找到第一个不用的进行分配

​ 除了open之外, socket编程的socket()/accept()等函数,也会返回一个fd值。

​ 1)Linux系统下,所有进程允许打开的最大fd数量。查询语句:

cat /proc/sys/fs/file-max

​ 2)Linux系统下,所有进程已经打开的fd数量及允许的最大数量。查询语句:

cat /proc/sys/fs/file-nr

​ 3)单个进程允许打开的最大fd数量.查询语句:

ulimit -n

​ 4)单个进程(例如进程id为5454)已经打开的fd.查询语句:

ls -l /proc/5454/fd/

更多有趣内容欢迎访问我的个人博客

相关文章

  • Linux编程--文件描述符fd

    学号:19021211263 linux中, 每一个进程在内核中,都对应有一个“打开文件”数组,存放指向文件对象的...

  • Java的IO模型

    一.预备知识 1.1 Linux网络IO模型 fd:文件描述符 socketfd:socket描述符 描述符是一个...

  • Java文件描述符

    文件描述符 在Linux中,进程是通过文件描述符(file descriptors,简称fd)而不是文件名来访问文...

  • Linux dup dup2函数理解

    在linux中,我们需要复制文件描述符,下面是我对文件描述符的理解 int dup(int fd); // 复制一...

  • I\O重定向

    文件描述符 在我们开始学习重定向之前,我们先来了解一下文件描述符(fd:file descriptor)linux...

  • 【fd】Linux文件描述符

    在Linux下一切资源皆文件,普通文件是文件,磁盘打印机是文件,socket 当然也是文件。 关于Linux下系统...

  • 文件描述符

    文件描述符是操作系统暴露给应用程序操作文件的句柄,Linux 称为 fd,windows 称 handle。 文件...

  • [pwnable.kr]第一题fd

    题目 标题: fd(fd在Linux中是文件描述符的意思,但是在此题中我没看到题干和fd有什么关系.) 文字描述 ...

  • Linux I\O总结 -- 基础概念篇

    文件描述符 0, 1, 2 文件描述符(fd) 0 is standard in (stdin),1 is sta...

  • 20170721 重定向和管道

    一、标准输入输出 linux会为每一个打开的文件分配一个fd(file descriptor,文件描述符) lin...

网友评论

    本文标题:Linux编程--文件描述符fd

    本文链接:https://www.haomeiwen.com/subject/otbdbctx.html