当执行child_process中的shell时,child_proccess中的stdout不能在stdin之前输出右
The stdout in child_process cannot output right row before stdin when exec shell in child_process
prompt.js:
var inquirer = require("inquirer");
console.log("Hi, welcome to Node Pizza");
var questions = [{
type: "confirm",
name: "toBeDelivered",
message: "Is it for a delivery",
default: false
}];
inquirer.prompt( questions, function( answers ) {
console.log("'nOrder receipt:");
console.log( JSON.stringify(answers, null, " ") );
});
index.js:
var childProcess = require('child_process');
var cp = childProcess.exec('node prompt.js', function (err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
if (err) {
console.log('exec error: ' + error);
}
});
process.stdin.pipe(cp.stdin);
在windows7 x64 git shell(节点v0.10.26)中执行命令:
node index.js
您可以看到,shell什么也不输出,正在等待读取输入。
为什么像"嗨,欢迎来到Node Pizza"这样的输出在读取输入之前没有输出?
您应该使用child_process.spawn()而不是child_proccess.exec(),因为exec()缓冲输出并等待进程退出。
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 可以't让我的if语句处理js中的html表单输入
- 引用对象中的通用值
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 不能从angular2中的子组件指定父组件中的数组
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如何更改bigquery API中的计费层选项
- 将Child附加到IE中的iframe
- 单击列表中的项目->查看详细信息但没有输出?Firebase.child失败:第一个参数是无效路径
- 从数据表中的Child获取父行
- 关于CSS中的first:child和last:child的问题
- 在child中发生的事件,我需要更改存储在parent中的状态
- 选择Jquery中nth-child和nth-last-child之间的所有元素
- 访问d3.js中的parent属性以设置child的属性