我的目標是能夠在單獨的進程中啓動shell腳本,並通過linux ptrace syscall來檢查它。 問題是我需要在啓動之前獲得過程PID。像subprocess.Popen(['ls','-l'])或python-sh這樣的東西立即運行命令,所以我試圖通過它的PID來檢查這個進程,它可能會結束。 另一方面,我不能使用os.fork + exec,因爲bash命令我開始重寫python代碼。python subprocess popen立即啓動
0
A
回答
3
如果您使用的是Unix,我認爲您可以在Popen構造函數中使用preexec_fn
參數。
根據子的文檔:
如果preexec_fn設置爲可調用對象,這個對象將在執行子之前的子進程調用。 (僅適用於Unix)
由於它在子進程中運行,因此可以使用os.getpid()
來獲取子pid。
2
只是叉子和你打電話ptrace()
與PTRACE_TRACEME
外殼Exec之前使該執行不會立即啓動,給父母都需要準備它告訴孩子繼續(PTRACE_CONT
,PTRACE_SYSCALL
,或PTRACE_SINGLESTEP
前的時間)。
使用subprocess.Popen()
時,您可以使用@RuiSilva提到的preexec_fn
參數來執行PTRACE_TRACEME
調用。
相關問題
- 1. subprocess popen Python
- 2. python subprocess Popen環境PATH?
- 3. python subprocess popen同步命令
- 4. python subprocess popen與參數
- 5. 忽略subprocess的輸出.Popen
- 6. 使用python subprocess調用matlab函數.Popen
- 7. 如何立即啓動可觀察間隔立即啓動?
- 8. python subprocess和mysqldump
- 9. 立即啓動android服務
- 10. systemd:SIGTERM啓動後立即
- 11. Android鬧鐘立即啓動
- 12. subprocess popen運行命令(HDFS/hadoop)
- 13. uWSGI python subprocess chrome/firefox失敗
- 14. 啓動後立即停止進程
- 15. Python popen python.exe
- 16. 的Python POPEN sysargv
- 17. Celerybeat在啓動後立即關閉
- 18. Java啓動Node.js程序立即關閉
- 19. animation.start()或animation.startNow()不立即啓動動畫
- 20. 啓動後彈出啓動應用程序立即啓動
- 21. 在啓動Windows啓動後立即啓動Qt應用程序
- 22. python subprocess missing arguments
- 23. Python - subprocess - getstatusoutput
- 24. xterm python subprocess
- 25. 從PHP啓動獨立Python進程
- 26. 一旦供電就立即啓動python腳本
- 27. 在RPi啓動後立即運行python腳本
- 28. 防止嵌入式applet立即啓動?
- 29. 立即用React Native啓動多個Animated.timing
- 30. JavaScript輪詢不立即啓動
不明白,爲什麼你不能使用fork + exec,因爲子進程在內部使用它。 – Daniel
在分叉進程中的執行python死去給新的代碼活(例如shell腳本)。 –
所以,因爲我做os.fork我只能執行python直到執行命令。有沒有辦法在孩子中執行bash,然後立即回到父母身上並在孩子pid上運行一些功能? –