在 linux 中,我可以使用lsof -i
如下函数:
def FindProcessUsingPort(portnum):
import os
fp = os.popen("lsof -i :%s" % portnum)
lines = fp.readlines()
fp.close()
pid = None
if len(lines) >= 2:
pid = int(lines[1].split()[1])
return pid
有没有跨平台的方法来解决这个问题?
作为相关参考,一旦我知道进程 id,psutil库就非常好,它可以让我以跨平台的方式为它确定各种有用的进程信息。目前我只是无法让第一部分工作(找到 pid)跨平台。
如果不熟悉该lsof -i
开关,输出如下所示(在启动打开 TCP 套接字侦听端口 1234 的 python 进程后):
$ lsof -i :1234 命令 PID 用户 FD 类型 设备尺寸/关闭节点名称 python 22380 russ 15u IPv4 4015476 0t0 TCP *:1234 (LISTEN)