Я пишу одну веб-оболочку Linux, используя node.js + socket.io. Простые команды вроде 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) Отправка Ctl C (\ x03) на стандартный ввод bash. var listener = io.listen(сервер);
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));
});
});
Я застрял в этой точке. Похоже на