供参考:https://nodejs.org/api/child_process.html#child_process_options_detached
嘿伙计们,
因此,spawn
spawn
不允许exec
& options.detached
,意味着它可以与父母分离,允许孩子在其上自己运行和完成,反之亦然,父母(在我们的特定情况下,父进程可以在长时间之前死亡)正在运行的子项,在这种情况下更新,无需像exec那样等待孩子。
我们有一个由节点(父)应用程序构建的长连接child.unref();
命令,但是就像("… ; … ; …")
不起作用,只有spawn("echo stuff >>stderr.log")
,我显然可以& #39; t链命令(因为它也在他的文档中引用,在SO上多次引用。
TLDR;
我们需要使用spawn('ls', [-l])
,但spawn
无法处理链式shell命令。
我现在真的需要在bash中编写命令然后执行它,这真的是唯一的选择吗?
THX
答案 0 :(得分:2)
请注意spawn
的shell
选项:
如果是
true
,则在shell中运行命令。在UNIX上使用'/bin/sh'
,在Windows上使用'cmd.exe'
。可以将不同的shell指定为字符串。 shell应该了解UNIX上的-c
开关或Windows上的/d /s /c
。默认为false
(无shell)。
所以:
let child = child_process.spawn('foo; bar; blah', { shell : true });
编辑:如果您使用的是不支持此选项的Node版本,可以选择以下选项:
let child = child_process.spawn('/bin/sh', [ '-c', 'foo; bar; blah' ]);