您好我正在使用subprocess.call("sudo bash /home/pi/Desktop/switchtest.sh", shell=True)
來啓動一個python腳本。 switchtest.sh
的內容是sudo python /home/pi/Desktop/switch1.py
。現在,使用相同的subprocess
調用如何停止運行python腳本?或者有沒有其他方法可以阻止這種情況?使用子進程調用停止bash腳本
回答
subprocess.call是同步的,所以它將不會返回,直到您的腳本完成。你可以使用popen來實現異步:
p = subprocess.Popen("sudo bash /home/pi/Desktop/switchtest.sh", shell=True)
# do something else, polling or waiting perhaps
# now kill it
p.terminate()
我想從我的主程序啓動其他程序。所以,我調用subprocess從一個函數啓動程序,並在我的主程序中的另一個函數中停止它。 – bobdxcool 2014-10-22 04:10:17
@bobdxcool:通常,'p.terminate()'可能只會殺死直接的子進程,讓孫子們繼續運行。在這種情況下,請參閱[如何終止使用shell = True啓動的python子進程](http://stackoverflow.com/q/4789837/4279)。 – jfs 2014-10-22 06:34:05
作爲一個額外的改進,你應該省略不必要和浪費的'shell = True'。 – tripleee 2014-10-22 08:02:55
- 1. 子進程調用bash腳本
- 2. python子進程調用bash腳本 - 也需要打印報價
- 3. 如何找出調用php bash腳本的進程或腳本
- 4. 使用python子進程調用來調用python腳本
- 5. 如何在init.d進程中運行並停止bash腳本?
- 6. 不停止程序(使用shell腳本)
- 7. 使用qsub在另一個bash腳本中調用bash腳本
- 8. 主要的Python進程停止使用SocketServer中的子進程調用
- 9. 終止整個bash腳本而不是子進程
- 10. 使用CancellationToken停止進程
- 11. runit調用腳本與啓動/停止
- 12. 本身調用bash腳本
- 13. bash腳本使用&&不停止的錯誤
- 14. 爲什麼我的bash腳本使用ffmpeg停止?
- 15. 使用bash或python腳本啓動和停止GCE實例
- 16. 使用ssh調用bash腳本
- 17. 已停止運行的php停止腳本進程
- 18. bash腳本啓動/停止ffmpeg x11grab
- 19. 如何正確停止bash腳本?
- 20. Bash啓動和停止腳本
- 21. 從子進程調用bash函數
- 22. SAS程序調用UNIX Bash Shell腳本
- 23. 如何從bash腳本中終止腳本的Cygwin bash中的進程樹
- 24. 每個進程使用bash腳本的CPU使用率
- 25. Bash腳本 - 守護進程
- 26. 從Bash腳本調用python腳本
- 27. 電子郵件停止發送時,運行VBA腳本調用和Excel腳本
- 28. 從PHP調用bash腳本
- 29. 從bash腳本調用grep
- 30. 測試使用子進程產生bash子shell的python腳本..有可能嗎?
如何在不涉及python的情況下停止腳本? – 2014-10-22 02:57:58
你爲什麼要調用'sudo'兩次?一次就夠了。 – tripleee 2014-10-22 03:12:36
爲什麼你使用Python來運行一個shell來運行Bash來運行Python? – tripleee 2014-10-22 03:13:14