一尘不染

Node.js子进程:从已经初始化的进程写入标准输入

node.js

我正在尝试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发送其他信息。

提前致谢。


阅读 276

收藏
2020-07-07

共1个答案

一尘不染

您还需要传递\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
2020-07-07