创建文件时,您需要向操作系统提供文件名 它创建文件并返回句柄。
我很想知道它是如何创建的。
操作系统是否对文件名执行某种散列以创建唯一的文件句柄 或者它是否增加了创建文件的数量并将其作为文件句柄返回?
答案 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
...