Я пытаюсь написать программу, которая контролирует серверы игр в Python. Для этого n нужно проверить, работает ли процесс сервера игр, который запущен на сеансе экрана, и для этого мне нужен pid, однако я не получаю pid сеанса экрана, Я получаю pid, который существует только до тех пор, пока всплывающая сессия не будет активна. Pid сеанса экрана - это один pid выше, чем возвращается метод ppid popen .pid(). Я знаю, что это может быть вызвано оболочкой = True, но я запускаю ее с shell = False. Любой чистый способ получить pid экрана/игрового сервера в процессе экрана? Моим единственным другим решением было бы просто написать .pid() + 1, но я предполагаю, что это было бы ужасным обходным путем.Python subprocess.popen wrong pid
Вот соответствующая часть моего кода:
proc = Popen(["screen", "-dmS", self.name, "./srcds_run", "-port", str(self.port), "-game", self.modDir], shell=False)
Спасибо заранее.
Любые решения для чистого пути, чтобы получить PID? Или может просто взять .pid() + 1? – Rapogh
Кажется, что нет чистого способа его получить, однако я бы предположил, что экран детерминирован таким образом, поэтому, если конечный процесс равен +1, вы можете считать, что это будет +1 99% времени, условия гонки относительно этого числа могут появиться, если другие процессы вокруг. –
ОК, спасибо :) Сделаю это или просто получаю pid с screen -ls – Rapogh