node.js怎么同步执行系统命令?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

我需要在node.js函数中

result = execSync('node -v');

使其同步执行给定的命令行并返回所有由该命令文本输出的信息。

提问于
用户回答回答于

Node.js从版本0.12开始 支持execSync

child_process.execSync(command[, options])

可以直接执行此操作:

const execSync = require('child_process').execSync;
code = execSync('node -v');
用户回答回答于

请参阅execSync

使用node-ffi很容易。对于一般的开发实用程序,它可以完成任务。安装库:

npm install node-ffi

示例:

var FFI = require("node-ffi");
var libc = new FFI.Library(null, {
  "system": ["int32", ["string"]]
});

var run = libc.system;
run("echo $USER");

如何获得标准输出:

var lib = ffi.Library(null, {
    // FILE* popen(char* cmd, char* mode);
    popen: ['pointer', ['string', 'string']],

    // void pclose(FILE* fp);
    pclose: ['void', [ 'pointer']],

    // char* fgets(char* buff, int buff, in)
    fgets: ['string', ['string', 'int','pointer']]
});

function execSync(cmd) {
  var
    buffer = new Buffer(1024),
    result = "",
    fp = lib.popen(cmd, 'r');

  if (!fp) throw new Error('execSync error: '+cmd);

  while(lib.fgets(buffer, 1024, fp)) {
    result += buffer.readCString();
  };
  lib.pclose(fp);

  return result;
}

console.log(execSync('echo $HOME'));

扫码关注云+社区