识别Unix域套接字连接另一端 [英] Identify other end of a unix domain socket connection

查看:27
本文介绍了识别Unix域套接字连接另一端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试找出哪个进程持有Unix域套接字的另一端。在一些strace输出中,我确定了一个给定的文件描述符,该文件描述符与我当前正在调试的问题有关,我想知道哪个进程在问题的另一端。由于该套接字有多个连接,因此简单地使用路径名是行不通的。

lsof为我提供以下信息:

dbus-daem  4175  mvg   10u  unix 0xffff8803e256d9c0      0t0  12828 @/tmp/dbus-LyGToFzlcG

所以我知道一些地址("内核地址"?),我知道一些套接字编号,我知道路径。我可以在其他地方找到相同的信息:

$ netstat -n | grep 12828
unix  3      [ ]         STREAM     CONNECTED     12828    @/tmp/dbus-LyGToFzlcG
$ grep -E '12828|ffff8803e256d9c0' /proc/net/unix
ffff8803e256d9c0: 00000003 00000000 00000000 0001 03 12828 @/tmp/dbus-LyGToFzlcG
$ ls -l /proc/*/fd/* 2>/dev/null | grep 12828
lrwx------ 1 mvg users 64 10. Aug 09:08 /proc/4175/fd/10 -> socket:[12828]

但是,这些都不能告诉我套接字连接的其他端是什么。如何判断另一端由哪个进程控制?

推荐答案

更新:现在可以使用实际接口完成此操作已有一段时间了。从Linux3.3开始,UNIX_DIAG特性为此信息提供了基于NetLink的API,lsof 4.89及更高版本支持它。有关详细信息,请参阅https://unix.stackexchange.com/a/190606/1820

这篇关于识别Unix域套接字连接另一端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆