@Henry, Did you ever find why this is not working? I found this thread searching for the exact thing. We need a connection to a shell across an encrypted connection. I found that when I run the tunnel program from the commandline, I can use "^C" to kill processes like `watch`. However, when I create the tunnel from a daemon (as will happen in our application), ^C fails to kill the process. I just see a "^C" on the screen. Since most commands can be killed in BASH with "^Z kill %", we can probably move forward -- the tunnel is a fail-safe-- but I'd like to understand the mechanism why sending "\x03" to the spawn'd `stdin` fails to create a SIGINT.
Thanks! On Friday, July 27, 2012 at 6:57:51 PM UTC-5, Herry wrote: > > yeah, actually i am looking into tty.js. But i wanna use it in my own > project with 'light' version. > Just wandering why \x03 is not working. > > Thanks > Herry > > On Fri, Jul 27, 2012 at 4:49 PM, Marak Squires <[email protected] > <javascript:>> wrote: > >> I would say try: https://github.com/chjj/tty.js >> >> On Fri, Jul 27, 2012 at 4:47 PM, Herry Wang <[email protected] >> <javascript:>> wrote: >> >>> I am writing one web-like linux shell using node.js + socket.io. Simple >>> command like, ls, cd are working well. But when issue command like ping >>> google.com, the stdout is printing endlessly. I tried to send Ctrl +C >>> to stdin, but no luck. >>> >>> 1) spawn 'bash' process >>> >>> spawn = require('child_process').spawn; >>> >>> >>> var sh = spawn('bash'); >>> >>> >>> 2) send bash stdout to socket.io >>> >>> sh.stdout.on('data', function(data) { >>> >>> >>> >>> console.log('stdout' + data); >>> >>> >>> >>> listener.sockets.emit("stdout",new Buffer(data)); >>> >>> >>> }); >>> >>> >>> 3) Sending Ctl C (\x03) to bash's 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)); >>> >>> >>> >>> }); >>> >>> >>> }); >>> >>> >>> I am stuck at this point. Seems like >>> >>> -- >>> Job Board: http://jobs.nodejs.org/ >>> Posting guidelines: >>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>> You received this message because you are subscribed to the Google >>> Groups "nodejs" group. >>> To post to this group, send email to [email protected] >>> <javascript:> >>> To unsubscribe from this group, send email to >>> [email protected] <javascript:> >>> For more options, visit this group at >>> http://groups.google.com/group/nodejs?hl=en?hl=en >>> >> >> -- >> Job Board: http://jobs.nodejs.org/ >> Posting guidelines: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> You received this message because you are subscribed to the Google >> Groups "nodejs" group. >> To post to this group, send email to [email protected] >> <javascript:> >> To unsubscribe from this group, send email to >> [email protected] <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/nodejs?hl=en?hl=en >> > > -- Job board: http://jobs.nodejs.org/ New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/b2c4d0ea-b4f3-416c-82fd-e04461364fce%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
