shell命令包含管道,在调用回调之前,child_process.exec()会等待全部完成吗?

时间:2016-03-25 15:14:03

标签: node.js

https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback 有这样的例子,

const exec = require('child_process').exec;
const child = exec('cat *.js bad_file | wc -l',
  (error, stdout, stderr) => {
    console.log(`stdout: ${stdout}`);
    console.log(`stderr: ${stderr}`);
    if (error !== null) {
      console.log(`exec error: ${error}`);
    }
});

在exec()中的shell命令中有一个管道,我的问题是,在" cat"之后调用回调。完成或之后" wc"完成?

这种情况会发生什么:

const child = exec('cat *.js; ls -l', callback);

谢谢!

1 个答案:

答案 0 :(得分:0)

我在Javascript中运行了一个示例,exec()作为任何带回调的函数;如果在回调被触发之前没有错误,则执行所有操作。

以JSON文件为例:

[
  {
    "test" : {
      "test1" : 1,
      "test2" : 2,
      "test3" : "this is a string"
    }
  }  
]

代码:

const exec = require('child_process').exec;
const child = exec('cat json.json | wc -l',
  (error, stdout, stderr) => {
    console.log('stdout:', stdout);
    if (error !== null) {
      console.log('exec error: ', error);
    }
  }
);

输出:

stdout:       9