Raz*_*zin 2 c sockets file-descriptor
在尝试学习套接字编程时,我看到了以下代码:
int sock;
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
Run Code Online (Sandbox Code Playgroud)
我浏览了手册页,发现套接字返回了一个文件描述符。我曾尝试在这里搜索互联网和其他类似问题,但我无法理解文件描述符到底是什么。我必须在两天内完成我的套接字编程课程。所以如果有人能用简单的语言解释文件描述符,那就太好了。
有两个相关的对象:文件描述符和文件描述。人们常常把这两者混淆,认为它们是一样的。
文件描述符是在应用程序中一个整数,是指该文件描述内核。
文件描述是内核中维护打开文件状态(其当前位置、阻塞/非阻塞等)的结构。在Linux文件descripion是struct file
。
该
open()
函数应在文件和文件描述符之间建立连接。它应当创造一个打开的文件的描述是指文件和文件描述符是指打开文件的描述。其他 I/O 函数使用文件描述符来引用该文件。path 参数指向命名文件的路径名。该
open()
函数应返回指定文件的文件描述符,该文件描述符是该进程当前未打开的最低文件描述符。打开的文件描述是新的,因此文件描述符不应与系统中的任何其他进程共享。