发送到子进程"/>
Node.js:如何将控件C发送到子进程
我正在使用node.js + socket.io编写一个类似Web的linux shell。像ls,cd这样的简单命令运行良好。但是,当发出诸如ping google之类的命令时,标准输出将不断打印。我试图将Ctrl + C发送给stdin,但没有运气。
1)生成“重击”过程
spawn = require('child_process').spawn;
var sh = spawn('bash');
2)将bash stdout发送到socket.io>
sh.stdout.on('data', function(data) { console.log('stdout' + data); listener.sockets.emit("stdout",new Buffer(data)); });
3)将Ctl C(\ x03)发送到bash的stdin。var listener = 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)); }); });
我被困在这一点上。好像
我正在使用node.js + socket.io编写一个类似Web的linux shell。像ls,cd这样的简单命令运行良好。但是,当发出诸如ping google之类的命令时,标准输出将不断打印。我尝试过...
回答如下:尝试process.kill(sh.pid)
。当我的主进程关闭时,我用它杀死集群中的工人。 sh.signalCode
应该等于SIGTERM
。当然,我不知道这是否适用于Windows。
更多推荐
Node.js:如何将控件C发送到子进程
发布评论