多命令shell AS分离子进程WITH spawn()IN Node.js

时间:2017-06-08 09:35:57

标签: node.js multithreading shell child-process spawn

供参考: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

1 个答案:

答案 0 :(得分:2)

请注意spawnshell选项:

  

如果是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' ]);