Linux内核 - 套接字文件描述符关闭位置

时间:2010-04-25 23:46:26

标签: linux-kernel kernel

在Linux内核中,关闭套接字的文件描述符会发生什么?我知道一个文件,文件的文件描述符在fs / open.cs函数sys_close()中关闭。但是,对于套接字文件描述符,这是相同的位置还是其他位置?

另外,套接字是利用file.c alloc_fd来分配文件描述符还是利用其他功能?

1 个答案:

答案 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()来获取和释放文件描述符。