NodeJS:子进程的事件
NodeJS: Events on child processes
var spawn = require("child_process").spawn;
var child = spawn("scp" , ["-P9022", path_to_file, scp_remote_path])
child.stdout.on("data", function(){
//Automatically type in password
})
我试图scp到一个删除服务器和自动密码输入(我知道,我应该使用公钥认证代替,但这是除了点)。当我运行所示的代码时,我得到了正确的密码提示;我是否可以通过代码检测到所述提示符的存在?在这种情况下,"data"事件似乎没有被触发。
编辑:不确定这是否重要,但process.stdout.isTTY是真的。当然,然后我尝试监听进程的可读事件。
process.stdin.on "readable", ()->
buf = process.stdin.read()
buf2 = process.stdout.read()
console.log "pin", buf, buf2
回调被调用,但是buf和buf2都是null
流在节点0.10中发生了变化,这可能是事件未触发的原因。理论上,添加"data"事件侦听器应该将可读流切换为向后兼容模式。然而,当您开始收听"数据"时,事情可能已经处于某种状态。(这是我的理论,我可能完全错了)
对于节点0.10中的新可读流,您不应该侦听"data"事件,而是侦听"readable"事件,然后从流中读取数据。查看此处查看更多可读事件
试试这个:
child.stdout.on("readable", function(){
var buf = child.stdout.read();
// check that you got your complete prompt for password...
// write password to stdin...
});
相关文章:
- 子进程未接收消息
- 如何通过子进程连接Java应用程序后在node.js中编写文件
- 节点.js子进程中的运行函数
- 如何将画布对象从子进程流式传输回 Node.js
- 如何在Firefox插件中向子进程发送消息,如Chrome原生消息
- 从生成的子进程中获取信息的最佳方法
- 在 Node.js 中使用 Jasmine 测试子进程发送
- 在快速服务器中生成子进程
- 如何在 node.js 中关闭子进程的 stdio 管道
- 如何使用并行子进程在大型数组上执行“工作”
- 使用 node.js (子进程) 运行 shell 脚本
- 如何从nodejs中的守护进程生成gpg子进程
- Cloud9 在生成子进程时抛出错误,是否有解决方法
- 如何在从 Meteor.method 返回之前等待子进程结果
- 将输入数据发送到节点.js中的子进程
- 完成时的子进程事件
- 如何在 Debian 上通过 node.js 中的引用变量停止子进程
- Node.js为什么不立即启动子进程
- 避免事件.Target指的是子进程而不是父进程
- NodeJS:子进程的事件