查找已连接的 Unix Domain Socket 的 PID

Posted

技术标签:

【中文标题】查找已连接的 Unix Domain Socket 的 PID【英文标题】:Find PID of the connected Unix Domain Socket 【发布时间】:2021-06-14 13:39:48 【问题描述】:

我在 Mac OS 中使用文件套接字在 python 中编写了简单的客户端服务器程序。我想知道来自服务器的已连接客户端套接字的进程 ID。我在 linux 中实现了,但我找不到任何适用于 Mac OS 的方法。

【问题讨论】:

假设您可以访问运行客户端的线程或进程,您可以在该线程或进程中调用os.getpid()。如果你不这样做,你应该在你的问题中指定这一点。 @Mr.Zeus os.getpid() 仅获取当前进程 ID。 【参考方案1】:

基于this Golang issue实现同样的事情,你可以这样做

sock, addr = server.accept()
other_pid = sock.getsockopt(0, 2)

其中0 对应于SOL_LOCAL2 对应于LOCAL_PEERPID

我刚刚试了一下——在我的 Mac 上运行良好。

【讨论】:

以上是关于查找已连接的 Unix Domain Socket 的 PID的主要内容,如果未能解决你的问题,请参考以下文章

检测无连接的 Unix Domain Socket 是不是没有接收器

每天看点源码 peertalk —— 一种基于 Unix Domain Socket 的 RPC 方法

Unix domain sockets

#yyds干货盘点#网络协议之:socket协议详解之Unix domain Socket

nc访问的ZeroMQ IPC Unix Domain Socket

Unix Domain Socket:在一个服务器进程和多个客户端进程之间使用数据报通信