我正试图用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)
提前谢谢。在
你的问题不在于python,而在于屏幕。在
当你用-dmS启动screen,它进入后台时,它会自己进行一些分叉和执行,因此,一个新的PID,如果你使用strace检查系统调用,你会看到屏幕二进制文件是如何在返回的PID中执行的,你可以看到,它稍后执行其他进程并完成。在
这是您在
ps
调用中看到的另一个进程相关问题 更多 >
编程相关推荐