如何验证两个本地进程是否通过套接字或 ipcs 进行通信?

如何验证两个本地进程是否通过套接字或 ipcs 进行通信?

我有两个进程,由它们的 pid 给出:P1 和 P2。是否有一种简单的方法来检查这些进程是否通过套接字或其他进程间通信机制进行通信?我需要知道这一点,因为我有两个看似无关的应用程序可能在幕后通信,我想知道情况是否确实如此。

答案1

您可以使用lsof -p P1lsof -p P2查看两个进程打开的文件描述符。然后您可以查看它们各自打开的套接字和管道列表,并查看它们中是否有相同的 ID。

imac:barmar $ sleep 100 | sleep 100 &
[1] 51885
imac:barmar $ jobs -l
[1]+ 51884 Running                 sleep 100
     51885                       | sleep 100 &
imac:barmar $ lsof -p 51884 | grep -i pipe
sleep   51884 barmar    1   PIPE 0x491a6929f9ea1ca9     16384          ->0x491a6929f9e9fae9
imac:barmar $ lsof -p 51885 | grep -i pipe
sleep   51885 barmar    0   PIPE 0x491a6929f9e9fae9     16384          ->0x491a6929f9ea1ca9

请注意,第一个进程中管道的目标 ID 与第二个进程中管道的源 ID 相同。这表明它们是同一管子的两端。

相关内容