我是python新手,所以這裏是我期待完成的。 我想用python來管理我的一些遊戲服務器並啓動/停止它們。爲此我想在自己的過程中運行每個遊戲服務器。 什麼是使用python創建進程的最佳方式,所以即使主應用程序停止,這些進程也可以繼續進行?python創建子流程(新手)
要啓動服務器,我只需要執行shell代碼。
如何在停止我的主應用程序並將其重新啓動到這些進程後訪問?
我是python新手,所以這裏是我期待完成的。 我想用python來管理我的一些遊戲服務器並啓動/停止它們。爲此我想在自己的過程中運行每個遊戲服務器。 什麼是使用python創建進程的最佳方式,所以即使主應用程序停止,這些進程也可以繼續進行?python創建子流程(新手)
要啓動服務器,我只需要執行shell代碼。
如何在停止我的主應用程序並將其重新啓動到這些進程後訪問?
檢查subprocess
模塊。有一個叫做call
的功能。請參閱here。 您可能需要將進程設置爲不是守護進程。
我不確定我是否完全理解這個問題,但也許這樣?
運行過程:
import subprocess
subprocess.Popen(['/path/gameserver']) #keeps running
而在另一個腳本中,你可以使用 'PS -A' 找到PID和殺死(或重新啓動)它:
import subprocess, signal
p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE)
out, err = p.communicate()
for line in out.splitlines():
if 'gameserver' in line:
pid = int(line.split(None, 1)[0])
os.kill(pid, signal.SIGKILL)