Node child_process的fork,spawn,exec我有话要说
node的异步io处理方式是众所周知的,io越密集,node 的优势就越明显,但是node是单线程的,不能像java那种多线程语言一样开启一些worker thread,充分利用cpu资源,提高计算效率和操作系统的吞吐量,但是node依然给我们提供了child_process让我们可以创建子进程来充分的利用cpu资源,让node也能处理cpu密集的应用。
exec
child_process给我们提供了三个方法用于创建子进程,fork,spawn,exec,首先来看一下exec。
child_process.exec(command[, options][, callback])
exec开始一个子进程执行shell命令,并缓存输出传入callback的第二个参数,这个缓存区默认只有200kb的大小,可以通过options.maxBuffer进行设置。
options
command <string> 要运行的命令,用空格分隔参数。
options <Object>
cwd <string> 子进程的当前工作目录。
env <Object> 环境变量键值对。
encoding <string> 默认为 'utf8'。
shell <string> 用于执行命令的 shell。 在 UNIX 上默认为 '/bin/sh',在 Windows 上默认为 process.env.ComSpec。 详见 Shell Requirements 与 Default Windows Shell。
timeout <number> 默认为 0。
maxBuffer <number> stdout 或 stderr 允许的最大字节数。 默认为 200*1024。 如果超过限制,则子进程会被终止。 查看警告: maxBuffer and Unicode。
killSignal <string> | <integer> 默认为 'SIGTERM'。
uid <number> 设置该进程的用户标识。(详见 setuid(2))
gid <number> 设置该进程的组标识。(详见 setgid(2))
windowsHide <boolean> Hide the subprocess console window t