在linux内核中,关闭套接字的文件描述符发生在什么地方?我知道对于一个文件,文件的文件描述符会在fs/open.cs函数sys_close()中关闭。但是,对于套接字文件描述符,这是相同的位置还是其他位置?
另外,套接字是使用file.c alloc_fd来分配文件描述符,还是使用其他函数?
发布于 2010-04-26 10:23:25
是的,sys_close()是关闭所有文件描述符的入口点,包括套接字。
sys_close()调用filp_close(),后者在struct file对象上调用fput()。当放置了对struct file的最后一个引用时,fput()调用文件对象的.release()方法,对于套接字,该方法是net/socket.c中的sock_close()函数。
套接字代码使用get_unused_fd()和put_unused_fd()来获取和释放文件描述符。
https://stackoverflow.com/questions/2710421
复制相似问题