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 });
}
}