Python子流程.popenpid错误

2024-06-16 09:02:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用Python编写一个监控游戏服务器的程序。 为此,n需要检查在屏幕会话中启动的gameserver进程是否仍在运行,为此,我需要它是pid,但是,我没有得到屏幕会话的pid,我得到的pid只存在于popen会话激活之前。pid()返回的pid()比pid()的session方法高。我知道这可能是真的,但我知道这是假的。有没有干净的方法可以在屏幕进程中获得屏幕进程/游戏服务器的pid?我唯一的另一个解决方案就是写.pid()+1,但我想这将是一个可怕的解决办法。在

以下是我代码的相关部分:

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

提前谢谢。在


Tags: 方法self程序服务器游戏屏幕进程port
1条回答
网友
1楼 · 发布于 2024-06-16 09:02:01

你的问题不在于python,而在于屏幕。在

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

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

相关问题 更多 >