child_process.execFileSync(file[, args][, options])
file<string> 要运行的可执行文件的名称或路径。args<string[]> 字符串参数列表。options<Object>cwd<string> | <URL> 子进程的当前工作目录。input<string> | <Buffer> | <TypedArray> | <DataView> 将作为标准输入传递给生成的进程的值。如果stdio[0]设置为'pipe',提供此值将覆盖stdio[0]。stdio<string> | <Array> 子进程的 stdio 配置。请参见child_process.spawn()的stdio。默认情况下,stderr将输出到父进程的 stderr,除非指定了stdio。默认值:'pipe'。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> 所有标准输入和输出使用的编码方式。 默认值:'buffer'。windowsHide<boolean> 隐藏通常在 Windows 系统上创建的子进程控制台窗口。默认值:false。shell<boolean> | <string> 如果为true,将在 shell 中运行command。在 Unix 上使用'/bin/sh',在 Windows 上使用process.env.ComSpec。可以通过字符串指定不同的 shell。参见 Shell 要求 和 默认 Windows shell。默认值:false(不使用 shell)。
- 返回:<Buffer> | <string> 命令的标准输出。
child_process.execFileSync() 方法通常与 child_process.execFile() 完全相同,唯一的区别是该方法在子进程完全关闭之前不会返回。当遇到超时并发送 killSignal 时,该方法不会返回,直到进程完全退出。
🌐 The child_process.execFileSync() method is generally identical to
child_process.execFile() with the exception that the method 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.
如果子进程拦截并处理 SIGTERM 信号且没有退出,父进程仍然会等待直到子进程退出。
🌐 If the child process intercepts and handles the SIGTERM signal and
does not exit, the parent process will still wait until the child process has
exited.
如果进程超时或有非零退出代码,此方法将抛出一个 Error,其中将包含底层 child_process.spawnSync() 的完整结果。
🌐 If the process times out or has a non-zero exit code, this method will throw an
Error that will include the full result of the underlying
child_process.spawnSync().
如果启用了 shell 选项,请不要将未经过滤的用户输入传递给此函数。任何包含 shell 元字符的输入都可能被用来触发任意命令的执行。
const { execFileSync } = require('node:child_process');
try {
const stdout = execFileSync('my-script.sh', ['my-arg'], {
// Capture stdout and stderr from child process. Overrides the
// default behavior of streaming child stderr to the parent stderr
stdio: 'pipe',
// Use utf8 encoding for stdio pipes
encoding: 'utf8',
});
console.log(stdout);
} catch (err) {
if (err.code) {
// Spawning child process failed
console.error(err.code);
} else {
// Child was spawned but exited with non-zero exit code
// Error contains any stdout and stderr from the child
const { stdout, stderr } = err;
console.error({ stdout, stderr });
}
}import { execFileSync } from 'node:child_process';
try {
const stdout = execFileSync('my-script.sh', ['my-arg'], {
// Capture stdout and stderr from child process. Overrides the
// default behavior of streaming child stderr to the parent stderr
stdio: 'pipe',
// Use utf8 encoding for stdio pipes
encoding: 'utf8',
});
console.log(stdout);
} catch (err) {
if (err.code) {
// Spawning child process failed
console.error(err.code);
} else {
// Child was spawned but exited with non-zero exit code
// Error contains any stdout and stderr from the child
const { stdout, stderr } = err;
console.error({ stdout, stderr });
}
}