簡體   English   中英

Python subprocess.run C 程序不工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM