【发布时间】:2012-02-02 05:02:38
【问题描述】:
当我运行下面的 ruby 代码时,按 ctrl + c 会立即停止程序
trap("INT") { exit }
while line = gets; puts line; end
但是,当我在获取之前使用 system() 命令时,除非我按“Enter”,否则按 ctrl + c 不会生效。似乎它与 system() 分叉子进程有关,并且父进程无法再检测到 SIGINT。您将如何更改代码以使 ctrl + c 对下面的代码立即生效
trap("INT") { exit }
if system("which ruby > /dev/null")
puts "ruby is installed"
end
while line = gets; puts line; end
【问题讨论】:
-
我可以在 debian 和 MacOS 上使用 ruby 1.8.7 重现此行为。
-
我在 MacOS 上使用 ruby-1.8.7-p357
-
但是当我切换到 ruby-1.9.2-p290 时,它们的响应方式相同