多命令外壳 AS 分离子进程 NODE .js 中的 spawn()



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

嘿,伙计们

所以我需要spawn子进程,spawn因为exec不允许options.detachedchild.unref();,这意味着它可以与父进程解耦,允许子进程自行运行和完成,反之亦然父进程(在我们的特殊情况下,父进程可以在长时间运行的子进程之前死亡, 在这种情况下,更新已完成,无需像 exec 那样等待孩子(。

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

TLDR;

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

感谢

请注意spawnshell选项:

如果true,则在外壳内部运行命令。在 UNIX 上使用'/bin/sh',在 Windows 上使用'cmd.exe'。可以将不同的外壳指定为字符串。shell 应该理解 UNIX 上的-c开关,或 Windows 上的/d /s /c。默认为 false(无外壳(。

所以:

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

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

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

最新更新