Wineで実行されるWindowsプログラムがあります。このWindowsプログラムを使用すると、外部プログラムを実行するための「ツール」を設定できます。このツールは標準の出力/エラーをキャプチャしてWindowsプログラムインターフェイスに表示します。
私はそのようなツールとして基本的なLinuxプログラムを実行できるようにしたいです。 WindowsプログラムでLinuxプログラムを実行できますが、出力にアクセスできません。代わりに、Windowsプログラムを実行しているコンソールウィンドウにLinuxプログラムの出力が表示されます。
私の特定のプログラムはテキストエディタであるEditPad Proですが、可能であれば外部プログラムを実行しているすべてのWindowsプログラムで動作するソリューションが必要です。 (多くのテキストエディタには、編集中のソースコードをコンパイル/実行する機能と同じ機能があります。)
一例として、/usr/bin/python3 --version
テストのために外部ツールとして実行してみました。一般的なLinux端末を開き、実行します。 Myprogramで外部ツールとしてwine myprogram.exe
設定します。/usr/bin/python3 --version
(私もstart /unix
beforeを試してみましたが、それはうまくいきませんでした。)ツールを実行すると、と入力したLinux端末にPythonのバージョン情報が表示されますwine myprogram.exe
。私のプログラムでPython出力を見ることはできません。しかし、私はその出力が、Myprogramを起動したLinux端末ではなく、それを実行している「Myprogram」に送信されることを望みます。
この目標をどのように達成できますか?
答え1
あなたが言ったことでは、MSプログラムが外部ツールのstdoutをキャプチャしているという証拠はありません。 stdoutがMSプログラムが実行されている端末に表示されている場合(「対照的に、Linuxの出力はプログラムがコンソールウィンドウの「Windowsプログラムを実行しました」に表示されます)、これは外部プログラムが呼び出し元からstdoutを継承していることを示します。
MSプログラムからデータを読み取る方法を見つける必要があります。どのオプションがあるかを確認してください。
- 外部ツールの標準出力を読み取るオプションはありますか?
- ファイルを読み込み、コマンドを一緒に文字列で囲む方法はありますか?