読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Ctrl+Cが押された場合の処理を指定する

Ruby

Signal.trapでシグナルが送付された場合の処理を指定できます。これを使ってプログラム実行中にCtrl+Cが押された場合(SIGINTのシグナルが送付される)に特別な処理を実行できます。

# Ctrl + C で停止させられた場合の処理を登録
Signal.trap(:INT){
  puts "SIGINT"
  exit(0)
}

# 五秒ごとに"test"と出力しつつループ
loop {
  puts "test"
  sleep 5
}

実行。

$ ruby signal-trap.rb

Ctrl+Cを押してみます。指定したブロックが実行されています!

test
test
SIGINT

killされた場合などは別のシグナルが送られるようなので、それぞれ適切な処理を指定しておくと安全にプログラムを終了させることができます。

参考:CodeZine - signalについて