child_process.spawnSync(command[, args][, options])


  • command <string> 要运行的命令。
  • args <string[]> 字符串参数的列表。
  • options <Object>

    • cwd <string> 子进程的当前工作目录。
    • input <string> | <Buffer> | <TypedArray> | <DataView> 该值将会作为 stdin 传给衍生的进程。提供此值将会覆盖 stdio[0]
    • argv0 <string> 显式地设置发送给子进程的 argv[0] 的值。如果没有指定,则将会被设置为 command 的值。
    • stdio <string> | <Array> 子进程的 stdio 配置。
    • env <Object> 环境变量的键值对。默认值: process.env
    • uid <number> 设置进程的用户标识,参阅 setuid(2)
    • gid <number> 设置进程的群组标识,参阅 setgid(2)
    • timeout <number> 允许进程运行的最长时间,以毫秒为单位。默认值: undefined
    • killSignal <string> | <integer> 当衍生的进程将被终止时使用的信号值。默认值: 'SIGTERM'
    • maxBuffer <number> stdout 或 stderr 上允许的最大字节数。如果超过限制,则子进程会被终止并且截断任何输出。参阅 maxBuffer 与 Unicode 中的警告。默认值: 1024 * 1024
    • encoding <string> 用于所有 stdio 输入和输出的字符编码。默认值: 'buffer'
    • shell <boolean> | <string> 如果为 true,则在 shell 中运行 command。 在 Unix 上使用 '/bin/sh',在 Windows 上使用 process.env.ComSpec。 可以将不同的 shell 指定为字符串。 参阅 shell 的要求Windows 默认的 shell默认值: false(没有 shell)。
    • windowsVerbatimArguments <boolean> 在 Windows 上不为参数加上引号或转义。在 Unix 上忽略。如果指定了 shell 并且是 CMD,则自动设为 true默认值: false
    • windowsHide <boolean> 隐藏子进程的控制台窗口(在 Windows 系统上通常会创建)。默认值: false
  • 返回: <Object>

    • pid <number> 子进程的 pid。
    • output <Array> stdio 输出的结果数组。
    • stdout <Buffer> | <string> output[1] 的内容。
    • stderr <Buffer> | <string> output[2] 的内容。
    • status <number> 子进程的退出码,如果子进程因信号而终止,则为 null
    • signal <string> 用于杀死子进程的信号,如果子进程不是因信号而终止,则为 null
    • error <Error> 如果子进程失败或超时的错误对象。

child_process.spawnSync() 方法通常与 child_process.spawn() 相同,但在子进程完全关闭之前该函数不会返回。 当遇到超时并发送 killSignal 时,该方法也需等到进程完全退出后才返回。 如果进程拦截并处理了 SIGTERM 信号但未退出,则父进程将会等待直到子进程退出。

如果启用了 shell 选项,则不要将未经过处理的用户输入传给此函数。 包含 shell 元字符的任何输入都可用于触发任意命令的执行。

  • command <string> The command to run.
  • args <string[]> List of string arguments.
  • options <Object>

    • cwd <string> Current working directory of the child process.
    • input <string> | <Buffer> | <TypedArray> | <DataView> The value which will be passed as stdin to the spawned process. Supplying this value will override stdio[0].
    • argv0 <string> Explicitly set the value of argv[0] sent to the child process. This will be set to command if not specified.
    • stdio <string> | <Array> Child's stdio configuration.
    • env <Object> Environment key-value pairs. Default: process.env.
    • uid <number> Sets the user identity of the process (see setuid(2)).
    • gid <number> Sets the group identity of the process (see setgid(2)).
    • timeout <number> In milliseconds the maximum amount of time the process is allowed to run. Default: undefined.
    • killSignal <string> | <integer> The signal value to be used when the spawned process will be killed. Default: 'SIGTERM'.
    • maxBuffer <number> Largest amount of data in bytes allowed on stdout or stderr. If exceeded, the child process is terminated and any output is truncated. See caveat at maxBuffer and Unicode. Default: 1024 * 1024.
    • encoding <string> The encoding used for all stdio inputs and outputs. Default: 'buffer'.
    • shell <boolean> | <string> If true, runs command inside of a shell. Uses '/bin/sh' on Unix, and process.env.ComSpec on Windows. A different shell can be specified as a string. See Shell Requirements and Default Windows Shell. Default: false (no shell).
    • windowsVerbatimArguments <boolean> No quoting or escaping of arguments is done on Windows. Ignored on Unix. This is set to true automatically when shell is specified and is CMD. Default: false.
    • windowsHide <boolean> Hide the subprocess console window that would normally be created on Windows systems. Default: false.
  • Returns: <Object>

    • pid <number> Pid of the child process.
    • output <Array> Array of results from stdio output.
    • stdout <Buffer> | <string> The contents of output[1].
    • stderr <Buffer> | <string> The contents of output[2].
    • status <number> | <null> The exit code of the subprocess, or null if the subprocess terminated due to a signal.
    • signal <string> | <null> The signal used to kill the subprocess, or null if the subprocess did not terminate due to a signal.
    • error <Error> The error object if the child process failed or timed out.

The child_process.spawnSync() method is generally identical to child_process.spawn() with the exception that the function will not return until the child process has fully closed. When a timeout has been encountered and killSignal is sent, the method won't return until the process has completely exited. If the process intercepts and handles the SIGTERM signal and doesn't exit, the parent process will wait until the child process has exited.

If the shell option is enabled, do not pass unsanitized user input to this function. Any input containing shell metacharacters may be used to trigger arbitrary command execution.