From: "bdimych (Dmitry Bolshakov)" Date: 2013-07-30T23:10:35+09:00 Subject: [ruby-core:56271] [ruby-trunk - Bug #8708][Open] It seems that a call to the "system" changes the handler of the INT signal Issue #8708 has been reported by bdimych (Dmitry Bolshakov). ---------------------------------------- Bug #8708: It seems that a call to the "system" changes the handler of the INT signal https://bugs.ruby-lang.org/issues/8708 Author: bdimych (Dmitry Bolshakov) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 1.9.3p429 (2013-05-15) [i386-cygwin] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN this is only on cygwin, on linux all ok $ uname -a CYGWIN_NT-5.1 bolshakovxp 1.7.21(0.267/5/3) 2013-07-15 12:17 i686 Cygwin --- test script --- #!/usr/bin/ruby STDOUT.sync = true puts 'before "system" ctrl-c stops the script immediately' STDIN.sysread(1) # intTrap = trap 'INT', 'DEFAULT' # ---------------------- if uncomment this wrapper system 'echo blabla' # trap 'INT', intTrap # ---------------------------------- then ctrl-c works immediately puts 'but after "system" ctrl-c waits until I press Enter' STDIN.sysread(1) --- output --- $ ./x.rb before "system" ctrl-c stops the script immediately ./x.rb: Interrupt $ ./x.rb before "system" ctrl-c stops the script immediately blabla but after "system" ctrl-c waits until I press Enter I'm pressing ctrl-c right now... but it stops only after Enter ./x.rb: Interrupt -- http://bugs.ruby-lang.org/