psutil.net_connections()是否不适用于OSX



我试图在python中的OS X(12.1(Macbook Pro上运行psutil.net_connections((,但遇到syscall失败的错误。这很奇怪,因为psutil的大多数其他功能都运行良好,没有任何问题,但不知何故,net_connections似乎是唯一一个不工作的功能。

Python 3.8.9 (default, Oct 26 2021, 07:25:53) 
[Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import psutil
>>> psutil.net_connections(kind='tcp')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mastermi/Library/Python/3.8/lib/python/site-packages/psutil/__init__.py", line 2161, in net_connections
return _psplatform.net_connections(kind)
File "/Users/mastermi/Library/Python/3.8/lib/python/site-packages/psutil/_psosx.py", line 248, in net_connections
cons = Process(pid).connections(kind)
File "/Users/mastermi/Library/Python/3.8/lib/python/site-packages/psutil/_psosx.py", line 343, in wrapper
return fun(self, *args, **kwargs)
File "/Users/mastermi/Library/Python/3.8/lib/python/site-packages/psutil/_psosx.py", line 500, in connections
rawlist = cext.proc_connections(self.pid, families, types)
RuntimeError: proc_pidinfo(PROC_PIDLISTFDS) 2/2 syscall failed

如果有人知道如何解决这个问题,我们将不胜感激。

P.S.如果这有助于,我的psutil版本是5.9.0

简短回答:是的,它不可用。

长话短说:这在macOS上不起作用的最可能原因是它没有proc文件系统。这不是一个很大的bug,因为它是一个缺乏的功能。作为替代方案,您可以尝试sysctl,它确实具有proc的一些功能,但我不确定它是否适合您的用例。

最新更新