diff options
Diffstat (limited to 'spec/ruby/core/signal/fixtures/trap_all.rb')
-rw-r--r-- | spec/ruby/core/signal/fixtures/trap_all.rb | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/spec/ruby/core/signal/fixtures/trap_all.rb b/spec/ruby/core/signal/fixtures/trap_all.rb index b2e85df247..afa00b498d 100644 --- a/spec/ruby/core/signal/fixtures/trap_all.rb +++ b/spec/ruby/core/signal/fixtures/trap_all.rb @@ -1,8 +1,15 @@ -reserved_signals = ARGV +cannot_be_trapped = %w[KILL STOP] # See man 2 signal -(Signal.list.keys - reserved_signals).each do |signal| - Signal.trap(signal, -> {}) - Signal.trap(signal, "DEFAULT") +(Signal.list.keys - cannot_be_trapped).each do |signal| + begin + Signal.trap(signal, -> {}) + rescue ArgumentError => e + unless /can't trap reserved signal|Signal already used by VM or OS/ =~ e.message + raise e + end + else + Signal.trap(signal, "DEFAULT") + end end puts "OK" |