当我运行下面的红宝石代码时,按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
答案 0 :(得分:0)
这看起来像是在1.9中修复的信号处理中的一个错误,以解决您的问题,在系统调用后定义信号陷阱:
if system("which ruby > /dev/null")
puts "ruby is installed"
end
trap("INT") { p 'Ciao!'; exit }
while line = gets; puts line; end
不理想,但有效。