我无法在以下代码中获得任何输出:
var spawn = require('child_process').spawn,script = 'ftp',child = spawn(script); child.stdout.on('data',function (data) { console.log('stdout: ' + data); }); child.stderr.on('data',function (data) { console.log('stderr: ' + data); }); child.on('close',function (code) { console.log('child process exited with code ' + code); });
它适用于普通脚本,如’ls’,’pwd’等.但不适用于’ftp’,’telnet’等交互式程序.有什么建议?
编辑:
以另一个脚本为例:
#!/usr/bin/env python name = raw_input("your name>") print name
当产生这个脚本时,我希望获取提示“你的名字>”与data事件,以便我可以后来输入一些东西到stdin.
问题是我在数据事件中什么都没有,似乎没有触发这些事件.
解决方法
ls,cat可通过输入输出和错误流控制.
ftp,telnet可以通过tty间接控制.
该协议也基于输入/输出流,但它更复杂.您可以使用可用的包来处理该协议.
https://github.com/chjj/pty.js
var pty = require('pty.js'); var term = pty.spawn('ftp',[],options); term.on('data',function(data) { console.log(data); }); term.write(ftpCmd + '\r');
pty的作者有一些有趣的例子,他通过网络套接字向网络转发pty,包括终端游戏:
https://github.com/chjj/tty.js
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。