我有一个脚本输出’hi’,休眠一秒钟,输出’hi’,休眠1秒,依此类推。现在我想我可以用这个模型解决这个问题。
var spawn = require('child_process').spawn,
temp = spawn('PATH TO SCRIPT WITH THE ABOVE BEHAVIOUR');
temp.stdout.pipe(process.stdout);
现在的问题是需要完成任务才能显示输出。据我了解,这是因为新生成的进程具有执行控制权。显然 node.js 不支持线程所以有什么解决方案吗?我的想法是可能运行两个实例,第一个用于创建任务的特定目的,并让它将输出通过管道传输到第二个实例的进程,考虑到这可以实现。
原文由 foklepoint 发布,翻译遵循 CC BY-SA 4.0 许可协议
我仍然对 Node.js 感到困惑,但我有一些想法。首先,我相信您需要使用
execFile
而不是spawn
;execFile
用于当您拥有脚本的路径时,而spawn
用于执行 Node.js 可以针对您的系统路径解析的众所周知的命令。1. 提供一个回调 来处理缓冲的输出:
2. 为子进程的标准输出 流 添加一个监听器( 9thport.net )
此外,似乎有一些选项可以让您将生成的进程从 Node 的控制终端中分离出来,这将允许它异步运行。我还没有对此进行测试,但是 API 文档 中的示例如下所示: