我有一个在 Wine 下运行的 Windows 程序。该 Windows 程序允许我设置“工具”来运行外部程序,然后它将捕获它们的标准输出/错误并在 Windows 程序的界面中向我显示。
我希望能够运行一个原生的 Linux 程序作为这样的工具。我能够让我的 Windows 程序运行 Linux 程序,但它无法访问输出。相反,Linux 程序的输出显示在我运行 Windows 程序的控制台窗口中。
我的特定程序是 EditPad Pro,一个文本编辑器,但如果可能的话,我希望有一个适用于任何运行外部程序的 Windows 程序的解决方案。 (许多文本编辑器都有这样的功能,例如,能够编译/运行正在编辑的源代码。)
举个例子,我尝试/usr/bin/python3 --version
作为外部工具运行来测试。我打开一个普通的 Linux 终端并执行wine myprogram.exe
.在 Myprogram 中,我将其设置/usr/bin/python3 --version
为外部工具。 (我也尝试过start /unix
提前使用,但这也不起作用。)当我运行该工具时,Python 版本信息显示在我输入的 linux 终端中wine myprogram.exe
。我的程序看不到 Python 的输出。但我希望该输出发送到运行它的“Myprogram”,而不是发送到启动 Myprogram 的 Linux 终端。
我怎样才能实现这个目标?
答案1
从你所说的来看,我没有看到任何证据表明 MS 程序正在捕获外部工具的标准输出:如果标准输出出现在启动 MS 程序的终端中(“相反,Linux 程序的输出显示在控制台窗口中”我运行了 Windows 程序。”),那么这表明外部程序正在从其调用者继承 stdout。
您需要在 MS 程序中找到一种方法来让它读取数据。看看它有哪些选项:
- 它是否可以选择读取外部工具的标准输出。
- 它是否有办法读取文件并将命令串在一起。