V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
thomaswang
V2EX  ›  程序员

文件描述符是如何生成的?

  •  
  •   thomaswang · 2017-06-28 18:11:54 +08:00 · 2331 次点击
    这是一个创建于 2492 天前的主题,其中的信息可能已经有所发展或是发生改变。
    "文件描述符的范围是 0 ~ O P E N M A X (见表 2 - 7 )。早期的 U N I X 版本采用的上限值是 1 9 (允许
    每个进程打开 2 0 个文件),现在很多系统则将其增加至 6 3。"

    不同进程可能出现相同的文件描述符?
    6 条回复    2017-06-28 22:44:41 +08:00
    geelaw
        1
    geelaw  
       2017-06-28 18:22:16 +08:00 via iPhone
    当然,因为 fd 是进程访问文件对象的 handle,每个进程有自己的 fd table。
    misaka19000
        2
    misaka19000  
       2017-06-28 18:27:11 +08:00
    fd 本身是对于进程而言的
    snnn
        3
    snnn  
       2017-06-28 21:25:31 +08:00 via Android
    文件描述符表并不是一个进程一个
    sagaxu
        4
    sagaxu  
       2017-06-28 21:28:54 +08:00 via Android
    现代系统默认都 65536 个了吧,63 个是 80 年代的系统吗?
    buf1024
        5
    buf1024  
       2017-06-28 22:13:49 +08:00
    对应每个进程,内核维护一张打开文件描述符的表,表项里面有一个指向文件表的指针,文件表里面记录下文件当前位移文件状态等与进程相关的文件信息,同时包括一个指向 V 节点的指针,V 节点包括了 i 节点信息。不同的进程可能出现同样数值的文件描述符,但所记录的文件表信息是不一样的。
    thomaswang
        6
    thomaswang  
    OP
       2017-06-28 22:44:41 +08:00 via iPhone
    @buf1024 多谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3386 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:15 · PVG 19:15 · LAX 04:15 · JFK 07:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.