繁体   English   中英

使用ruby system()命令后未捕获SIGINT

[英]SIGINT not being captured after using ruby system() command

当我运行下面的红宝石代码时,按ctrl + c会立即停止程序

trap("INT") { exit }
while line = gets; puts line; end

但是,当我在获取之前使用system()命令时,按ctrl + c不会产生任何效果,除非我按“ Enter”键。 似乎它与派生子进程的system()有关,并且父进程无法以某种方式检测到SIGINT。 您将如何更改代码,以便ctrl + c对下面的代码立即生效

trap("INT") { exit }

if system("which ruby > /dev/null")
  puts "ruby is installed"
end

while line = gets; puts line; end

看起来像1.9中已修复的信号处理中的错误,要解决您的问题,请在系统调用后定义信号陷阱:

if system("which ruby > /dev/null")
  puts "ruby is installed"
end
trap("INT") { p 'Ciao!'; exit }
while line = gets; puts line; end

不理想,但是可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM