在Linux内核中,关闭套接字的文件描述符会发生什么?我知道一个文件,文件的文件描述符在fs / open.cs函数sys_close()中关闭。但是,对于套接字文件描述符,这是相同的位置还是其他位置?
另外,套接字是利用file.c alloc_fd来分配文件描述符还是利用其他功能?
答案 0 :(得分:3)
是的,sys_close()
是关闭所有文件描述符(包括套接字)的入口点。
sys_close()
调用filp_close()
,在fput()
对象上调用struct file
。在放置struct file
的最后一个引用时,fput()
调用文件对象的.release()
方法,对于套接字,该方法是sock_close()
中的net/socket.c
函数。
套接字代码使用get_unused_fd()
和put_unused_fd()
来获取和释放文件描述符。