1
我是python的新手機。最近,我遇到了Python Popen的一個問題,希望有人能幫助我。謝謝:d用Python的Popen創建後臺進程
a.py
#!/usr/bin/env python
import b
b.run()
while True:
pass
b.py
#!/usr/bin/env python
import subprocess
def run():
subprocess.Popen(['ping www.google.com > /dev/null &'], shell=True)
run()
運行時b.py和grep進程狀態
$ ps aux | grep
test 35806 0.0 0.0 2451284 592 s010 Sl 10:11 0:00.00 ping www.google.com
平過程中後臺運行與狀態S1。
現在我嘗試a.py
$ ps aux | grep
test 36088 0.0 0.0 2444116 604 s010 Sl+ 10:15 0:00.00 ping www.google.com
平過程中的狀態變化在SL +運行,如果我ctrl + c
停止a.py,Ping的流程也被終止。
有什麼辦法可以讓ping進程在背景中運行,並且在停止a.py時不會受到影響嗎?以及爲什麼ping處理狀態從S1更改爲S1 +?
你想創建一個[Unix的守護進程(https://pypi.python.org/pypi/python-daemon/)或者是不夠的,如果['ping'繼續運行後'一.py'退出](http://stackoverflow.com/q/13243807/4279)? – jfs
@ J.F.Sebastian:謝謝你的建議。 :D 我發現添加參數「preexec_fn = os.setsid」可以解決問題。 –