2010-03-05 73 views
2

创建文件时,您将文件的名称提供给操作系统,并创建文件并返回您的句柄。操作系统如何创建唯一的文件句柄?

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

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

回答

1

文件句柄在给定时间在一个进程中唯一是唯一的。在Linux上,我认为它是一个简单的计数器,递增。我认为Windows将内存地址返回到关于该文件的信息块(信息块的结构是操作系统的内部结构,因此无法直接处理)。

2

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

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 
... 
相关问题