Это зависит от сигнала. Если вы хотите перехватить ctrl-C, это работает в Windows. Многие сигналы (sigup1, sigusr1 и т. Д.) На самом деле не работают правильно в Windows (по крайней мере, не для меня). Вот как можно перехватить Ctrl-C. В этом примере я просто печатаю сообщение и затем покидаю приложение. Вы можете передать любой объект proc в диспетчер сигналов - обязательно обратите внимание на область действия, если вы читаете / редактируете переменные внутри proc:
trap("INT") { puts "\nExiting"; exit;}