SignalException 클래스

SignalException 클래스

프로세스에 시그널(signal)이 도착했을 때 Ruby가 던지는 예외가 SignalException이에요. 운영체제 차원의 신호가 코드 위에서 예외로 나타난다고 보면 돼요.

출처: Ruby 4.0 API

본문

시그널이 수신되면 SignalException이 발생해요.

begin
  Process.kill('HUP',Process.pid)
  sleep # wait for receiver to handle signal sent by Process.kill
rescue SignalException => e
  puts "received Exception #{e}"
end

produces:

received Exception SIGHUP

여기서 Process.kill('HUP', Process.pid)가 자기 자신에게 HUP 시그널을 보내고, 그 시그널을 Ruby가 받아서 예외로 바꿔주는 거예요. 예외 객체의 문자열 표현이 SIGHUP처럼 실제 시그널 이름을 담고 있는 걸 볼 수 있죠.

Public Class Methods

new(sig_name) → signal_exception

SignalException 객체를 새로 만들어요. sig_name은 알려진 시그널 이름이어야 해요.

SignalException.new("INT")   #=> #<SignalException: SIGINT>

signo → num

시그널 번호를 반환해요.

SignalException.new("INT").signo   #=> 2