child_process.execFile(file[, args][, options][, callback])
| 版本 | 变化 | 
|---|---|
| v16.4.0、v14.18.0 | 
  | 
| v15.4.0、v14.17.0 | 添加了AbortSignal 支持。  | 
| v8.8.0 | 现在支持  | 
| v0.1.91 | 添加于:v0.1.91  | 
参数
file<string> 要运行的可执行文件的名称或路径。args<string[]> 字符串参数列表。options<Object>cwd<string> | <URL> 子进程的当前工作目录。env<Object> 环境键值对。 默认:process.env。encoding<string> 默认:'utf8'timeout<number> 默认:0maxBuffer<number>stdout 或 stderr 上允许的最大数据量(以字节为单位)。如果超过,则终止子进程并截断任何输出。请参阅警告maxBuffer和 Unicode.默认:1024 * 1024.killSignal<string> | <integer> 默认:'SIGTERM'uid<number> 设置进程的用户身份(参见)。setuid(2)gid<number> 设置进程的组标识(参见)。setgid(2)windowsHide<boolean> 隐藏通常在 Windows 系统上创建的子进程控制台窗口。 默认:false。windowsVerbatimArguments<boolean> 在 Windows 上不对参数进行引用或转义。在 Unix 上被忽略。 默认:false。shell<boolean> | <string> 如果true,在 shell 内运行command。在 Unix 上使用'/bin/sh',在 Windows 上使用process.env.ComSpec。可以将不同的 shell 指定为字符串。请参阅 Shell requirements 和 Default Windows shell 。 默认:false(无 shell )。signal<AbortSignal> 允许使用 AbortSignal 中止子进程。
callback<Function>进程终止时与输出一起调用。- 返回: <ChildProcess>
 
child_process.execFile() 函数与   类似,只是它默认不生成 shell。相反,指定的可执行文件 child_process.exec() file 直接作为新进程生成,使其比   更高效。child_process.exec() 
支持与  相同的选项。由于未生成 shell,因此不支持 I/O 重定向和文件通配等行为。child_process.exec() 
const { execFile } = require('node:child_process');
const child = execFile('node', ['--version'], (error, stdout, stderr) => {
  if (error) {
    throw error;
  }
  console.log(stdout);
});
传递给回调的 stdout 和 stderr 参数将包含子进程的 stdout 和 stderr 输出。默认情况下,Node.js 会将输出解码为 UTF-8 并将字符串传递给回调。 encoding 选项可用于指定用于解码 stdout 和 stderr 输出的字符编码。如果 encoding 是 'buffer' 或无法识别的字符编码,则将 Buffer 对象传递给回调。
如果此方法作为其   ed 版本调用,它会为具有 util.promisify() stdout 和 stderr 属性的 Object 返回 Promise。返回的ChildProcess 实例作为child 属性附加到Promise。如果发生错误(包括导致退出代码不是 0 的任何错误),将返回一个被拒绝的 promise,并在回调中给出相同的 error 对象,但具有两个附加属性 stdout 和 stderr 。
const util = require('node:util');
const execFile = util.promisify(require('node:child_process').execFile);
async function getVersion() {
  const { stdout } = await execFile('node', ['--version']);
  console.log(stdout);
}
getVersion();
如果启用了 shell 选项,请不要将未经处理的用户输入传递给此函数。任何包含 shell 元字符的输入都可用于触发任意命令执行。
如果启用了 signal 选项,则在相应的 AbortController 上调用 .abort() 与在子进程上调用 .kill() 类似,只是传递给回调的错误将是 AbortError :
const { execFile } = require('node:child_process');
const controller = new AbortController();
const { signal } = controller;
const child = execFile('node', ['--version'], { signal }, (error) => {
  console.log(error); // an AbortError
});
controller.abort();
相关用法
- Node.js child_process.exec(command[, options][, callback])用法及代码示例
 - Node.js child_process.spawn(command[, args][, options])用法及代码示例
 - Node.js child_process.fork(modulePath[, args][, options])用法及代码示例
 - Node.js certificate.verifySpkac(spkac[, encoding])用法及代码示例
 - Node.js console.timeEnd()用法及代码示例
 - Node.js crypto.randomFill()用法及代码示例
 - Node.js crypto.createHmac()用法及代码示例
 - Node.js crypto.randomFillSync(buffer[, offset][, size])用法及代码示例
 - Node.js console.countReset()用法及代码示例
 - Node.js cluster.worker用法及代码示例
 - Node.js crypto.constants用法及代码示例
 - Node.js crypto.randomInt([min, ]max[, callback])用法及代码示例
 - Node.js crypto.publicEncrypt()用法及代码示例
 - Node.js console.trace()用法及代码示例
 - Node.js console.timeLog()用法及代码示例
 - Node.js console.timeStamp()用法及代码示例
 - Node.js crypto.publicDecrypt()用法及代码示例
 - Node.js console.dir()用法及代码示例
 - Node.js crypto.pbkdf2Sync(password, salt, iterations, keylen, digest)用法及代码示例
 - Node.js console.log()用法及代码示例
 - Node.js crypto.createHash()用法及代码示例
 - Node.js crypto.hkdfSync()用法及代码示例
 - Node.js crypto.randomFillSync()用法及代码示例
 - Node.js crypto.checkPrime()用法及代码示例
 - Node.js clienthttp2session.request()用法及代码示例
 
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 child_process.execFile(file[, args][, options][, callback])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
