【发布时间】:2026-01-14 14:30:01
【问题描述】:
我正在尝试编写代码以使用 Python 运行 C 可执行文件。
在终端调用./myprogram即可运行C程序,会提示选择菜单,如下图:
1. Login
2. Register
现在,使用 Python 和子进程,我编写了以下代码:
import subprocess
subprocess.run(["./myprogram"])
Python 程序运行,但什么也没显示(也没有错误!)。任何想法为什么会发生?
当我尝试时:
import subprocess
subprocess.run(["ls"])
显示该特定目录中的所有文件。所以我认为这是对的。
【问题讨论】:
-
尝试
p=subprocess.Popen(["./myprogram"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)并使用stdout_data,stderr_data=p.communicate()。这将返回一个标准错误和标准输出数据的元组。然后只需在标准输出中打印数据(作为文件) -
谢谢@Adam。在这种情况下,如何输入要从菜单中选择的值?
-
如果你的程序
myprogram,通过stdin与用户交互,那么你不能,因为你已经将子进程stdin绑定到subprocess.PIPE,用于ipc与父进程。如果myprogram不需要与用户输入交互,则考虑通过标准输入管道将这些输入从父级推送到子级。 -
有什么解决方法吗?所以我不能使用 Python 与 C 程序交互?
标签: python c subprocess