web-dev-qa-db-ja.com

Nodejs子プロセス:既に初期化されたプロセスからstdinに書き込みます

ノードのchild_processを使用して外部プロセスphantomjsを生成し、初期化後にそのプロセスに情報を送信しようとしていますが、それは可能ですか?

私は次のコードを持っています:

var spawn = require('child_process').spawn,
    child = spawn('phantomjs');

child.stdin.setEncoding = 'utf-8';
child.stdout.pipe(process.stdout);

child.stdin.write("console.log('Hello from PhantomJS')");

しかし、私が標準出力で得た唯一のものは、phantomjsコンソールの初期プロンプトです。

phantomjs> 

したがって、child.stdin.writeは何の効果もありません。

初期スポーン後に追加情報をphantomjsに送信できるかどうかはわかりません。

前もって感謝します。

44
zanona

コマンドを機能させるには、\nシンボルも渡す必要があります。

var spawn = require('child_process').spawn,
    child = spawn('phantomjs');

child.stdin.setEncoding('utf-8');
child.stdout.pipe(process.stdout);

child.stdin.write("console.log('Hello from PhantomJS')\n");

child.stdin.end(); /// this call seems necessary, at least with plain node.js executable
81
Vadim Baryshev