我知道该进程的pid
,我需要获取它使用的套接字fd
,所以我在/proc/$pid/fd
中查找它,例如:
$ ls -la /proc/1442/fd | grep socket
lrwx------ 1 root root 64 Jan 23 16:22 7 -> socket:[21807]
$
现在,当我将表示套接字描述符的值7传递给getsockopt()
时,我收到EBADF
错误。是否允许使用root权限从另一个进程执行此操作?
我做错了什么?
答案 0 :(得分:1)
文件描述符是按进程的。它们不在进程之间共享。
如果要访问其他进程拥有的文件描述符,有时可以open()
/proc/<pid>/fd
中的路径获取其副本。但是,这仅适用于普通文件;它不适用于套接字。 (This question addresses the internal details.)
所以,简而言之,没有。我没有直截了当的方式来了解一个过程来接管&#34;来自另一个进程的套接字,没有该进程的合作。
答案 1 :(得分:0)