ハードウェア製品の自動テストおよびアップグレード用の Web インターフェイスを備えた小さなアプリケーションを開発しています。アプリケーションは、Apache 2 Web サーバーと CGI テクノロジ (python 言語) を使用します。ある時点で、外部 Windows アプリケーション (TeraTerm Pro for Zmodem ファイル転送) を実行する必要があります。Python コード:
pipe=subprocess.Popen("run_me.bat", shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
TeraTerm が起動しません。さて、起動しますが(プロセスリストに表示されます)、ウィンドウが表示されず、何も起こりません。Windowsコマンドからpythonスクリプトを起動すると、cmd.exeがこのStart-> Run ... cmd.exeの行で起動され、「python.exe transfer.py」と入力されると、すべて正常に動作し、TeraTermウィンドウが表示され、ファイル転送が開始されます。
私は部分的な解決策を見つけました。WindowsコンソールウィンドウでユーザーとしてApache2を起動すると、すべてがファイルで動作します。Apache2 がサービスとして実行される場合 - 問題が発生します。Apache2 がサービスとして実行されている場合、コンソール アプリケーションの実行に問題がないことに気付きました。ウィンドウ ベースのアプリケーションの実行に問題があります。
Apache2 をサービスとして使用し、ウィンドウ アプリケーションを問題なく実行することは可能ですか? 通常の作業中、多くのコンソール ウィンドウが 0.5 秒間表示されるため、部分的な解決策は受け入れられません。それはかなり不安です。