多命令shell AS分离subprocessWITH spawn()IN Node.js
供参考: https : //nodejs.org/api/child_process.html#child_process_options_detached
大家好,
所以我需要spawn
一个subprocess,由于exec
不允许options.detached
& child.unref();
,这意味着它可以与父母分离,允许孩子在自己的父母上运行和完成,反之亦然父母(在我们的特定情况下,父母的过程可以在长期的孩子之前死亡,在这种情况下,更新是完成而不需要像exec那样等待孩子)。
我们有一个由节点(父)应用程序构build的长连接("… ; … ; …")
命令,但像spawn("echo stuff >>stderr.log")
不起作用,只有spawn('ls', [-l])
,我显然不能链接命令(因为它在文档中也被引用,并在SO上多次引用。
TLDR;
我们需要使用spawn
,但spawn
不能处理链式shell命令。 我现在真的需要在bash中编写我的命令,然后执行它,这是否是唯一的select?
谢谢
注意spawn
的shell
选项:
如果为
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' ]);