Linux
Bash 操作員 & 不工作
根據 bash 參考,我們可以通過以 & 字元結尾來提供非阻塞命令。但是,當我嘗試以下命令時,它不起作用:
python -m SimpleHTTPServer 8080&
我打算這樣做的原因是我想啟動內置的 python 網路伺服器作為另一個更大的程序的一部分,該程序也是用 python 編寫的。如何在非阻塞/守護程序模式下發出此命令?我什至嘗試在 python 中使用“subprocess.Popen()”來執行這個命令,這也應該創建一個非阻塞程序,但即使這樣也不起作用。
編輯:這是啟動網路伺服器的python程式碼部分(添加’nohup’似乎可以解決問題):
pid_webserver = execute("nohup python -m SimpleHTTPServer 8080 &",wait=False,shellexec= True) #pid_webserver = execute("python -m SimpleHTTPServer 8080 &",wait=False,shellexec= True) def execute(command,errorstring='', wait = True, shellexec = True): try: print 'command=' + command p=subprocess.Popen("gksu '" + command + "'", shell=shellexec,stdout=subprocess.PIPE,stderr=subprocess.PIPE) if wait: p.wait() result=get_stdout(p) return result else: print 'not waiting' return p except subprocess.CalledProcessError as e: print 'error occured:' + errorstring return errorstring
&
作品。但我認為您正在尋找的是nohup python -m SimpleHTTPServer &
.但我認為你也應該看看http://docs.python.org/2/library/simplehttpserver.html。
‘&’ 在這裡不起作用…它是一個 bash 運算符,在您的腳本中,您沒有使用 bash 來執行命令,而是從 python 腳本執行它 - 這就是它永遠不會起作用的原因。
嘗試 :
import os os.system("python -m SimpleHTTPServer 8080 &")