(私はPythonを始めたばかりなので、これが多少曖昧である場合は申し訳ありません。)
Node.js スクリプトから生成された実行中のコマンドライン ノード サーバーと通信する SublimeText 2 Intellisense プラグインを作成中です。通信したいノード アプリケーションは、 https ://github.com/clausreinke/typescript-tools にあります。(tss コマンドが呼び出されると、実行するコマンドを受け取る必要がある独自のサブプロセス コマンド ライン replが開始されることに注意してください。そのコマンド ラインにコマンドを取得すること自体はまったく別の問題であり、私はまだ解決していません。 )
次の方法でノードと正常に「通信」できます。
self.process = subprocess.Popen( self.args,
stdin = subprocess.PIPE,
stdout = subprocess.PIPE,
stderr = subprocess.STDOUT)
self.result = self.process.communicate()[0]
を使用して呼び出されます
self.thread = NodeJS( args )
self.thread.start()
self.handle_thread( self.thread )
問題は、node.js ファイルが実行されると、パイプを閉じて IO プロセスを終了することです。プロセスへの後続の呼び出しは、
ValueError: I/O operation on closed file
私の質問は次のとおりです。ノード アプリを起動し、バックグラウンドで実行してから、Python から継続的にコマンドを「パイプ」する方法を教えてください。
私はしたいと思います
- プラグインのロード時に node.js サーバーを起動し、バックグラウンドで実行し続ける
- ノードに送信するキー入力をリッスンします(すでに機能しています)
- 実行中のノード プロセスからの出力をパイプ処理して (定義を調べた後) Python に戻し、出力を表示しますが、スレッドまたはプロセスを閉じないでください。
すべての手順が完了しましたが、非同期の連続的なやり取りを除いて、私には理解できないようです。
どんな助けでも大歓迎です。