[英]Python subprocess.run C Program not working
我正在嘗試編寫代碼以使用 Python 運行 C 可執行文件。
C程序只需在終端調用./myprogram
即可運行,會提示選擇菜單,如下圖:
1. Login
2. Register
現在,使用 Python 和子進程,我編寫以下代碼:
import subprocess
subprocess.run(["./myprogram"])
Python 程序運行但什么也沒顯示(也沒有錯誤。)? 任何想法為什么會發生?
當我嘗試時:
import subprocess
subprocess.run(["ls"])
顯示該特定目錄中的所有文件。 所以我認為這是對的。
您必須像這樣打開子流程:
import subprocess
cmd = subprocess.Popen(['./myprogram'], stdin=subprocess.PIPE)
這意味着cmd
將有一個可以寫入的.stdin
; 默認情況下, print
將 output 發送到您的 Python 腳本的標准輸出,該標准輸出與子進程的標准輸入無關。 這樣做:
cmd.stdin.write('1\n') # tell myprogram to select 1
然后很可能你應該:
cmd.stdin.flush() # don't let your input stay in in-memory-buffers
或者
cmd.stdin.close() # if you're done with writing to the subprocess.
PS 如果您的 Python 腳本是 *nix 系統上的一個長時間運行的進程,並且您注意到您的子進程已結束但仍顯示為 Z(僵屍)進程,請檢查該答案。
也許刷新標准輸出?
print("", flush=True,end="")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.