gpt4 book ai didi

unix - open() 系统调用如何返回文件描述符?

转载 作者:行者123 更新时间:2023-12-01 07:31:26 26 4
gpt4 key购买 nike

我想知道调用 open() 系统调用时内核中发生了什么?它如何返回文件的文件描述符?

最佳答案

内核在内部创建一个结构,其中包含有关您刚刚打开的文件的附加信息。该结构包含诸如 inode 编号、文件系统上文件的名称、其大小、其关联的 super block 等信息......

事实上,在内核中,它是VFS (Virtual File System)。处理文件 I/O 操作的文件,它是本地的(在您的硬盘上)还是远程的(位于 FTP 服务器上,例如 ftpfs 所做的)。

GNU/Linux 上的每个文件系统都实现打开/读取/写入/关闭文件的相同机制。这确保每个开发人员都不必担心他们试图访问哪种文件,无论您正在与哪种文件交互,都可以使用相同的 open()、read() ... API。您可以找到有关 VFS 是什么的更多信息 herehere (IBM 的精彩文章)。

最后,假设 open 返回的每个文件描述符都与您的程序相关,因此您可能打开的第一个文件将关联到文件描述符 3 等等...可以通过 /proc/{pid_of_your_process} 找出哪些文件描述符绑定(bind)到许多 GNU/Linux 发行版上的每个进程。

关于unix - open() 系统调用如何返回文件描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16286153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com