操作系统如何创建唯一的文件句柄?

时间:2010-03-05 08:58:11

标签: operating-system

创建文件时,您需要向操作系统提供文件名 它创建文件并返回句柄。

我很想知道它是如何创建的。

操作系统是否对文件名执行某种散列以创建唯一的文件句柄 或者它是否增加了创建文件的数量并将其作为文件句柄返回?

3 个答案:

答案 0 :(得分:2)

不,它是OS内核中一个数组的索引,对于那个进程是唯一的。文件句柄通常只是小整数。

答案 1 :(得分:1)

文件句柄在给定时间内仅在一个进程中是唯一的。在Linux上我认为它是一个增加的简单计数器。我认为Windows将内存地址返回到有关文件的信息块(信息块的结构是操作系统内部的,所以不可能直接处理它。)

答案 2 :(得分:1)

文件句柄(文件描述符)只是一个对于该特定进程唯一的数字。例如,标准输入,输出和错误有fds(0,1,2)。在linux中,您可以在/proc/PID/fd中检查进程的文件描述符,其中PID是进程ID。

以下是一个例子:

$ pidof executable
4711
$ ls -l /proc/4711/fd
...
$ # Use 'lsof' to show file descriptor opened by this process:
$ lsof -p 4711
...