我一直在阅读有关文件描述符以及操作系统如何管理文件并使用C系统调用" open()"为进程提供对它们的访问,我有几个问题:
感谢。
答案 0 :(得分:2)
有一个系统范围的打开文件描述表,并且有一个打开文件描述符的每进程表。每个打开的文件描述符引用一个打开的文件描述(参见open()
和
close()
),但有几个描述符可能会引用相同的描述(想想dup()
,dup2()
和fork()
)。
任何语言都可以通过调用实际进行系统调用的适当的汇编程序来调用系统调用。大多数脚本语言都是基于C或C ++构建的,因此它们不计算在内,但其他语言 - 比如Fortran或Ada或D或Go - 可以以适合其语义的方式提供对系统调用的访问。
您已打开一个不需要打开的文件描述符,因此您可以同时打开一个较少的其他文件。如果您的程序很短并且不会耗尽资源,您可以忽略关闭它。关闭文件有助于确保将数据写入磁盘;操作系统内核知道,如果您的程序是打开文件并关闭文件的唯一进程,则不再需要它在缓冲区高速缓存中的任何磁盘块。