Linux kernel Linux内核-套接字文件描述符关闭位置
在linux内核中,套接字的文件描述符在哪里关闭?我知道对于文件,文件的文件描述符在fs/open.cs函数sys_close()中是关闭的。但是,对于套接字文件描述符,这是同一位置还是其他位置 另外,套接字是利用file.c alloc\u fd分配文件描述符还是利用其他函数?是的,Linux kernel Linux内核-套接字文件描述符关闭位置,linux-kernel,kernel,Linux Kernel,Kernel,在linux内核中,套接字的文件描述符在哪里关闭?我知道对于文件,文件的文件描述符在fs/open.cs函数sys_close()中是关闭的。但是,对于套接字文件描述符,这是同一位置还是其他位置 另外,套接字是利用file.c alloc\u fd分配文件描述符还是利用其他函数?是的,sys\u close()是关闭所有文件描述符(包括套接字)的入口点 sys\u close()调用filp\u close(),它调用struct file对象上的fput()。当最后一次引用结构文件时,fput
sys\u close()
是关闭所有文件描述符(包括套接字)的入口点
sys\u close()
调用filp\u close()
,它调用struct file
对象上的fput()
。当最后一次引用结构文件时,fput()
调用文件对象的.release()
方法,对于套接字,该方法是net/socket.c
中的sock\u close()
函数
套接字代码使用get\u unused\u fd()
和put\u unused\u fd()
来获取和释放文件描述符。是的,sys\u close()
是关闭所有文件描述符(包括套接字)的入口点
sys\u close()
调用filp\u close()
,它调用struct file
对象上的fput()
。当最后一次引用结构文件时,fput()
调用文件对象的.release()
方法,对于套接字,该方法是net/socket.c
中的sock\u close()
函数
套接字代码使用
get_unused_fd()
和put_unused_fd()
来获取和释放文件描述符。我看到get_unused_fd调用alloc_fd,因此通过在sys_close和alloc_fd中根据需要更改代码,这应该可以处理文件和套接字的所有文件描述符,正确吗?我看到get_unused_fd调用alloc_fd,所以通过在sys_close和alloc_fd中根据需要更改代码,这应该可以处理文件和套接字的所有文件描述符,对吗?