gpt4 book ai didi

Python subprocess.popen错误的pid

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:19 26 4
gpt4 key购买 nike

我正在尝试用 Python 编写一个监控游戏服务器的程序。为此,需要查找在 screen session 中启动的游戏服务器进程是否仍在运行,为此,我需要它的 pid,但是,我没有得到 screen session 的 pid,我得到的 pid 只存在于 popen session 处于事件状态之前。 screen session 的 pid 比 popen 的 .pid() 方法返回的 pid 高 1。我知道这可能是由 shell=True 引起的,但我使用 shell=False 运行它。有什么干净的方法可以获取 screen 进程/游戏服务器的 pid 吗?我唯一的其他解决方案就是编写 .pid()+1,但我想这将是一个可怕的解决方法。

这是我的代码的相关部分:

proc = Popen(["screen", "-dmS", self.name, "./srcds_run", "-port", str(self.port), "-game", self.modDir], shell=False)

提前致谢。

最佳答案

你的问题不在于Python,而在于 screen 。

当你使用 -dmS 启动 screen 并进入后台时,它会自行进行一些 fork 和执行,因此,一个新的 PID,如果你使用 strace 检查系统调用,你将看到 screen 二进制文件如何在返回的 PID 中执行,你可以看到,它稍后执行其他进程并完成。

这是您在 ps 调用中看到的另一个进程

关于Python subprocess.popen错误的pid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25915136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com