我正在尝试制作一个节点包,该包执行一个永久脚本,该脚本不断打印数据并将其传递给包调用者。
我使用 exec 对象来调用以下命令:
var exec = require('child_process').exec;
// ...
exec("script always", function(error, stdout, stderr) {
if (error instanceof Error) {
throw error;
}
// here's where everything gets messy
if(callback)
callback(stream)
});
此命令会一直打印数据,直到我停止它。现在,如何将此控制台输出流式传输到另一个想要实现的节点事件?我一直在阅读有关可读流的信息,但我不知道如何将它们联系在一起(实际上,呵呵,为了示例,它们具有getReadableStreamSomehow()
功能)。
你应该使用 spawn
,而不是 exec
,如此处所述。这将返回一个对象,您可以在其中直接访问程序的流,因此您可以轻松pipe
它们,例如,订阅它们的data
事件。
有关如何捕获 curl
命令的输出的示例,请参阅此示例。
希望这有帮助:-)