多命令shell AS分离subprocessWITH spawn()IN Node.js

供参考: https : //nodejs.org/api/child_process.html#child_process_options_detached

大家好,

所以我需要spawn一个subprocess,由于exec不允许options.detachedchild.unref(); ,这意味着它可以与父母分离,允许孩子在自己的父母上运行和完成,反之亦然父母(在我们的特定情况下,父母的过程可以在长期的孩子之前死亡,在这种情况下,更新是完成而不需要像exec那样等待孩子)。

我们有一个由节点(父)应用程序构build的长连接("… ; … ; …")命令,但像spawn("echo stuff >>stderr.log")不起作用,只有spawn('ls', [-l]) ,我显然不能链接命令(因为它在文档中也被引用,并在SO上多次引用。

TLDR;

我们需要使用spawn ,但spawn不能处理链式shell命令。 我现在真的需要在bash中编写我的命令,然后执行它,这是否是唯一的select?

谢谢

注意spawnshell选项:

如果为true ,则在shell中运行命令。 在UNIX上使用'/bin/sh' ,在Windows上使用'cmd.exe' 。 不同的shell可以被指定为一个string。 shell应该理解UNIX上的-c开关,或者Windows上的/d /s /c 。 默认为false (没有shell)。

所以:

 let child = child_process.spawn('foo; bar; blah', { shell : true }); 

编辑 :如果您使用不支持此选项的节点版本,这是一个替代方法:

 let child = child_process.spawn('/bin/sh', [ '-c', 'foo; bar; blah' ]);