阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js child_process.execFile

      Node.js child_process.execFile(file[, args][, options][, callback]) 版本历史

      版本变更
      v8.8.0The windowsHide option is supported now.
      v0.1.91新增于: v0.1.91
      • file < string> 要运行的可执行文件的名称或路径。
      • args < string[]> 字符串参数的列表。
      • options < Object>
        • cwd < string> 子进程的当前工作目录。
        • env < Object> 环境变量的键值对。
        • encoding < string> 字符编码。默认值: ‘utf8’。
        • timeout < number> 默认值: 0。
        • maxBuffer < number> stdout 或 stderr 允许的最大字节数。如果超过限制,则子进程会终止。参阅 maxBuffer 与 Unicode。默认值: 200 * 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 的要求与 Windows 默认的 shell。 默认值: false(没有 shell)。
      • callback < Function> 当进程终止时调用。
        • error < Error>
        • stdout < string> | < Buffer>
        • stderr < string> | < Buffer>
      • 返回: < ChildProcess>

      child_process.execFile() 函数类似于 child_process.exec(),但默认情况下不会衍生 shell。 相反,指定的可执行 file 直接作为新进程衍生,使其比 child_process.exec() 稍微更高效。

      支持与 child_process.exec() 相同的选项。 由于没有生成 shell,因此不支持 I/O 重定向和文件通配等行为。

      const { execFile } = require('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 对象。

      如果调用此方法的 util.promisify() 版本,则返回的 Promise 会返回具有 stdout 属性和 stderr 属性的 Object。 如果出现错误(包括导致退出码不是 0 的任何错误),则返回被拒绝的 Promise,并在回调中给定相同的 error 对象,但是还有另外两个属性 stdout 和 stderr。

      const util = require('util');
      const execFile = util.promisify(require('child_process').execFile);
      async function getVersion() {
        const { stdout } = await execFile('node', ['--version']);
        console.log(stdout);
      }
      getVersion();
      

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


      更多内容请参考:Node.js child_process 子进程,或者通过 点击对应菜单 进行查看;


      目录
      本文目录
      目录