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> 默认:0
maxBuffer
<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])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。