2017-04-15 51 views
-2

我是python新手,所以這裏是我期待完成的。 我想用python來管理我的一些遊戲服務器並啓動/停止它們。爲此我想在自己的過程中運行每個遊戲服務器。 什麼是使用python創建進程的最佳方式,所以即使主應用程序停止,這些進程也可以繼續進行?python創建子流程(新手)

要啓動服務器,我只需要執行shell代碼。

如何在停止我的主應用程序並將其重新啓動到這些進程後訪問?

回答

0

檢查subprocess模塊。有一個叫做call的功能。請參閱here。 您可能需要將進程設置爲不是守護進程。

1

我不確定我是否完全理解這個問題,但也許這樣?

運行過程:

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)