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

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

在linux内核中,套接字的文件描述符在哪里关闭?我知道对于文件,文件的文件描述符在fs/open.cs函数sys_close()中是关闭的。但是,对于套接字文件描述符,这是同一位置还是其他位置

另外,套接字是利用file.c alloc\u fd分配文件描述符还是利用其他函数?

是的,
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中根据需要更改代码,这应该可以处理文件和套接字的所有文件描述符,对吗?