Когда я запустил код рубина ниже, нажатие 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