创建同步进程
- child_process.execSync(command[, options])
- child_process.execFileSync(file[, args][, options])
- child_process.spawnSync(command[, args][, options])
child_process.spawnSync()、child_process.execSync() 和 child_process.execFileSync() 方法是同步的并且会阻塞 Node.js 的事件循环,暂停任何额外代码的执行直到衍生的进程退出为止。
像这样的阻塞调用有利于简化通用脚本任务,并在启动时有利于简化应用配置的加载/处理。
child_process.execSync(command[, options])
command{String}options{Object}cwd{String} 子进程的当前工作目录input{String} | {Buffer} 该值会被作为传递到衍生进程中的标准输入- 提供的值将会覆盖
stdio[0]
- 提供的值将会覆盖
stdio{Array} 子进程中的 stdio 配置(默认:'pipe')。stderr除非指定了stdio,否则默认会输出到父进程中的 stderr。
env{Object} 环境变量键值对shell{String} 用于执行命令的 shell(默认:在 UNIX 上为 '/bin/sh',在 Windows 上为 'cmd.exe'。该 shell 应该能够在 UNIX 上以-c启动或在 Windows 上以/s /c启动。在 Windows 中,命令行的解析应与cmd.exe兼容。)uid{Number} 设置该进程的用户标识。(详见 setuid(2))gid{Number} 设置该进程的组标识。(详见 setgid(2))timeout{Number} 进程被运行运行的最大时间量,以毫秒为单位(默认:undefined)killSignal{String} 当衍生进程将被杀死时要使用的信号值。(默认:'SIGTERM')maxBuffer{Number} 在 stdout 或 stderr 中所允许的最大数据量(以字节为单位)- 如果超过了该限制,子进程将被终止。encoding{String} 用于所有 stdio 输入和输出的编码
返回:{Buffer} | {String} 该命令的标准输出
child_process.execSync() 基本等同于 child_process.exec(),除了该方法直到子进程完全关闭前不会返回结果。当遇到超时并发送了 killSignal 信号时,该方法直到进程完全退出前不会返回结果。请注意,如果拦截了子进程并且处理了 SIGTERM 信号但没有退出,父进程会一直等待直到子进程退出为止。
如果进程超时,或有一个非零退出码,该方法会抛出错误。该 Error 对象包含从 child_process.spawnSync() 获取的整个结果(对象的 Error 属性)。
child_process.execFileSync(file[, args][, options])
file{String} 要运行的可执行文件的名称或路径args{Array} 字符串参数列表options{Object}cwd{String} 子进程的当前工作目录input{String} | {Buffer} 该值会被作为传递到衍生进程中的标准输入- 提供的值将会覆盖
stdio[0]
- 提供的值将会覆盖
stdio{Array} 子进程中的 stdio 配置(默认:'pipe')。stderr除非指定了stdio,否则默认会输出到父进程中的 stderr。
env{Object} 环境变量键值对shell{String} 用于执行命令的 shell(默认:在 UNIX 上为 '/bin/sh',在 Windows 上为 'cmd.exe'。该 shell 应该能够在 UNIX 上以-c启动或在 Windows 上以/s /c启动。在 Windows 中,命令行的解析应与cmd.exe兼容。)uid{Number} 设置该进程的用户标识。(详见 setuid(2))gid{Number} 设置该进程的组标识。(详见 setgid(2))timeout{Number} 进程被运行运行的最大时间量,以毫秒为单位(默认:undefined)killSignal{String} 当衍生进程将被杀死时要使用的信号值。(默认:'SIGTERM')maxBuffer{Number} 在 stdout 或 stderr 中所允许的最大数据量(以字节为单位)- 如果超过了该限制,子进程将被终止。encoding{String} 用于所有 stdio 输入和输出的编码
返回:{Buffer} | {String} 该命令的标准输出
child_process.execFileSync() 基本等同于 child_process.execFile(),除了该方法直到子进程完全关闭前不会返回结果。当遇到超时并发送了 killSignal 信号时,该方法直到进程完全退出前不会返回结果。请注意,如果拦截了子进程并且处理了 SIGTERM 信号但没有退出,父进程会一直等待直到子进程退出为止。
如果进程超时,或有一个非零退出码,该方法会抛出错误。该 Error 对象包含从 child_process.spawnSync() 获取的整个结果(对象的 Error 属性)。
child_process.spawnSync(command[, args][, options])
command{String} 要运行的命令args{Array} 字符串参数列表options{Object}cwd{String} 子进程的当前工作目录input{String} | {Buffer} 该值会被作为传递到衍生进程中的标准输入- 提供的值将会覆盖
stdio[0]
- 提供的值将会覆盖
stdio{Array} 子进程中的 stdio 配置。env{Object} 环境变量键值对uid{Number} 设置该进程的用户标识。(详见 setuid(2))gid{Number} 设置该进程的组标识。(详见 setgid(2))timeout{Number} 进程被运行运行的最大时间量,以毫秒为单位(默认:undefined)killSignal{String} 当衍生进程将被杀死时要使用的信号值。(默认:'SIGTERM')maxBuffer{Number} 在 stdout 或 stderr 中所允许的最大数据量(以字节为单位)- 如果超过了该限制,子进程将被终止。encoding{String} 用于所有 stdio 输入和输出的编码。(默认:'buffer')shell{Boolean} | {String} 如果为true,在一个 shell 中运行command。在 UNIX 上运行 '/bin/sh',在 Windows 上运行 'cmd.exe'。一个不同的 shell 可以被指定为字符串。该 shell 应该能够在 UNIX 上以-c启动或在 Windows 上以/s /c启动。默认为false(没有 shell)。
返回:{Object}
pid{Number} 子进程的 pidoutput{Array} 从 stdio 输出的结果数组stdout{Buffer} | {String}output[1]的内容stderr{Buffer} | {String}output[2]的内容status{Number} 子进程的退出码signal{String} 用于杀死子进程的信号error{Error} 如果子进程失败或超时产生的错误对象。
child_process.spawnSync() 基本等同于 child_process.spawn(),除了该方法直到子进程完全关闭前不会返回结果。当遇到超时并发送了 killSignal 信号时,该方法直到进程完全退出前不会返回结果。请注意,如果拦截了子进程并且处理了 SIGTERM 信号但没有退出,父进程会一直等待直到子进程退出为止。