日期:2014-05-16  浏览次数:20664 次

文件描述符到底是什么东西?
新手,看文件描述符有些糊涂了,下面的哪种表述是正确的?

1> 文件描述符就是一个整数(例如:0,1,2),但是通过这个数字内核可以算出文件的访问权限等
2> 文件描述符就是一个整数,但是这个整数可以看作另外一个数据结构的索引,这个数据结构中存储了关于此文件的相关信息
3> 如果有其他解释,请大家发言



------解决方案--------------------
"1 > 文件描述符就是一个整数(例如:0,1,2),但是通过这个数字内核可以算出文件的访问权限等"
我觉得是掩码,如一个32位无符号整数,如0x0001,0x0002,0x0004,0x0008,0x00016...
每个2进制位代表一个功能,如该位为1就表示有,为零表示无

------解决方案--------------------
http://book.csdn.net/BookFiles/418/img/image100.jpg
------解决方案--------------------
文件描述符:标识文件用的,楼主应该知道 

文件描述符标志(close_on_exec):仅仅是一个标志,当你fork了一个子进程,然后在子进程中调用了exec函数时就用到了该 
标志.意义是:执行exec前是否要关闭这个文件描述符.如果我没说清楚,建议你看下 < <unix环境高级编程>>第二版的56页的3.10,注意(1)中的(a),然后你在翻到190页,看下数第5行和第六行 看完应该就明白了 

文件状态标志:是在系统文件表中,什么write,read,trunc这些东西.
------解决方案--------------------
就是一个名,可以根据它找到具体的控制结构
就象你叫花剑独舞一样,可以根据他找到你这个人.
------解决方案--------------------
就像windows下的句柄一样,用它可以方面的操作文件。
在linux/unix下,基本上都是对文件的读写。所意文件描述符很重要。
------解决方案--------------------
打开一个文件需要维护很多数据,不光是权限的问题,内核对每一个打开文件都分配了一个数据结构,而文件描述符则是指向这些数据结构的索引,内核可以通过一个文件描述符查到相应文件的数据。所以,从某种意义上,你的第二种解释是比较接近的。

------解决方案--------------------
个人觉得是一个handle,用来操作文件...
------解决方案--------------------
LZ的描述2比较接近了, 他就是一个内核用的标记,你通过这个标记告诉内核你要操作那个文件.
------解决方案--------------------
应该是第二种
------解决方案--------------------
我也很模糊,謝謝樓主和達人們