从内核模块中 AF_UNIX 套接字的 fd 获取绝对路径

Get absolute path from a fd of an AF_UNIX socket in kernel module

给定一个文件描述符,我需要获取它的绝对路径,无论它是常规文件还是 AF_UNIX 套接字。 How can I get a filename from a file descriptor inside a kernel module? 处的代码适用于常规文件,但使用 AF_UNIX 套接字时,我得到类似 "socket:[12345]" 的内容,而不是绝对路径“/tmp/.X11-unix/X0”。

struct sockaddr_un {
                    unsigned short   sun_family;    // AF_UNIX
                    char            sun_path[108];  // pathname
                    };

netstat -x 通过参考 /proc/net/unix 显示 unix 套接字的完整路径名,它由 unix_seq_shownet/unix/af_unix.c 中填充。在这里查看它是如何完成的:

http://lxr.free-electrons.com/source/net/unix/af_unix.c?v=4.1#L2252