文件描述符
0x01
《从实践中学嵌入式Linux应用程序开发》一书中关于文件描述符的内容:
内核如何区分和引用特定的文件呢?这里用到一个重要的概念——文件描述符。对于Linux而言,所有对设备和文件的操作都是使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。
0x02
看某教程中关于文件描述符:
在Linux系统中,所有打开的文件都对应一个文件描述符。文件描述符的本质是一个非负整数。当打开一个文件时,该整数由系统来分配。文件描述符的范围是0 - OPEN_MAX。
0x03
根据上面的描述,我们得到:当打开文件或创建文件时,才会返回文件描述符。
0x04
自己的胡思乱想:操作文件时,为什么非得先使用open()函数打开相应的文件?
出现这个想法是因为自己对于文件操作的函数都掌握的不好。文件操作函数,无论是关闭close()、读read()、写write()、还是偏移lseek(),都需要传入的参数是fd,文件描述符。而文件描述符只能是打开或者创建文件时才能获得到。所以必须先使用open()函数打开文件,然后才能对文件进行操作。