我正在使用node.js + socket.io 编写一个类似Web 的Linux shell。简单的命令如 ls、cd 运行良好。
但是当发出像 ping google.com 这样的命令时,标准输出会无休止地打印。
我尝试将 Ctrl +C 发送到标准输入,但没有成功。
1) 产生“bash”进程
spawn = require('child_process').spawn;
var sh = spawn('bash');
2)将bash标准输出发送到socket.io
sh.stdout.on('data', function(data) {
console.log('stdout' + data);
listener.sockets.emit("stdout",new Buffer(data));
});
3) 将 Ctrl C (\x03) 发送到 bash 标准输入。 var 监听器 = io.listen(server);
listener.set('log level',1);
listener.sockets.on('connection', function(client){
client.on('message', function(data){
if(data === "KILL") {
console.log('!!!!' + data);
sh.stdin.write('\x03');
client.broadcast.send(new Buffer("KILLING "));
//return;
};
console.log(data);
sh.stdin.write(data+"\n");
client.broadcast.send(new Buffer("> "+data));
});
});
我被困在这一点上。似乎
Try process.kill(sh.pid)
。当我的主进程关闭时,我用它来杀死集群中的工作人员。sh.signalCode
应该等于SIGTERM
。当然,我不知道这是否适用于Windows。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)