psutil.net_connections() 对于 OSX 不可用吗?

Jer*_*how 11 python macos psutil

我试图在我的 OS X (12.1) Macbook Pro 上用 python 运行 psutil.net_connections() ,但遇到了 syscall failed 错误。这很奇怪,因为 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

Run Code Online (Sandbox Code Playgroud)

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

PS 我的 psutil 版本是 5.9.0 如果有帮助的话

lla*_*136 4

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

长答案:这在 macOS 上不起作用的最可能原因是它没有proc 文件系统。这并不是什么大错误,因为它缺乏功能。作为替代方案,您可以尝试sysctlwhich 确实具有 proc 的一些功能,但我不确定它是否适合您的用例。