给定一个 X11 窗口 ID,有没有办法找到创建它的进程的 ID?
当然,这并不总是可能的,例如,如果窗口来自 TCP 连接。对于这种情况,我想要与远程端关联的 IP 和端口。
之前在 Stack Overflow 上问过这个问题,建议的方法是使用该_NET_WM_PID属性。但这是由应用程序设置的。如果应用程序运行不佳,有没有办法做到这一点?
我想确定哪个进程具有 UNIX 套接字的另一端。
具体来说,我问的是用 来创建的socketpair(),尽管任何 UNIX 套接字的问题都是一样的。
我有一个程序parent可以创建一个socketpair(AF_UNIX, SOCK_STREAM, 0, fds), 和fork()s。父进程关闭fds[1]并保持fds[0]通信。孩子反其道而行之,close(fds[0]); s=fds[1]。然后孩子exec()的另一个程序,child1。两者可以通过这个 socketpair 来回通信。
现在,假设我知道parent是谁,但我想弄清楚是谁child1。我该怎么做呢?
有几种工具可供我使用,但没有一个可以告诉我套接字的另一端是哪个进程。我试过了:
lsof -c prognamelsof -c parent -c child1ls -l /proc/$(pidof server)/fdcat /proc/net/unix基本上,我可以看到两个套接字以及关于它们的所有内容,但无法判断它们是否已连接。我试图确定父进程中的哪个 FD 正在与哪个子进程通信。