65

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

次のコードがあります。

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')");

しかし、stdout で得た唯一のものは、phantomjs コンソールの最初のプロンプトです。

phantomjs> 

そのためchild.stdin.write、効果がないようです。

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

前もって感謝します。

4

2 に答える 2

116

\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
于 2012-11-05T11:17:44.050 に答える
0

とで囲む必要がありますwrite。このメソッドは、が呼び出されてからバッファリングされたすべてのデータをフラッシュします。データもフラッシュしますが、それ以上のデータは受け入れられません。corkuncorkuncorkcorkchild.stdin.end()

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

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

child.stdin.cork();
child.stdin.write("console.log('Hello from PhantomJS')\n");
child.stdin.uncork();
于 2021-07-13T03:35:33.927 に答える