ようへいの日々精進XP

よかろうもん

シェルスクリプト と Ruby と Python で ctrl + c を捕捉するメモ

ども、ハゲです。

tl;dr

ループさせているスクリプトを ctrl + c を押して止めたことを捕捉したいと思って調べたメモ。


メモ

シェルスクリプト ver

#!/bin/sh

trap 'echo "trapped."; exit 0' INT

echo "停止したいは ctrl + c を押して下さい"
while :
do
  date
  sleep 5
done

以下、お試し。

$ ./trap.sh
停止したいは ctrl + c を押して下さい
Sun Feb 14 23:24:11 JST 2016
Sun Feb 14 23:24:16 JST 2016
Sun Feb 14 23:24:21 JST 2016
^Ctrapped.

Ruby ver

#!/usr/bin/env ruby

Signal.trap(:INT) do
  puts "trapped."
  exit 0
end

puts "停止したいは ctrl + c を押して下さい"
loop do
  p Time.now
  sleep 5
end

以下、お試し。

$ ruby trap.rb
停止したいは ctrl + c を押して下さい
2016-02-14 23:25:23 +0900
2016-02-14 23:25:28 +0900
2016-02-14 23:25:33 +0900
^Ctrapped.

Python ver(未完成)

#!/usr/bin/env python

# -*- coding:utf-8 -*-
import time

print "停止したいは ctrl + c を押して下さい"
try:
    while True:
        print time.ctime()
        time.sleep(5)
except KeyboardInterrupt:
    print 'trapped.'

以下、お試し。

$ python trap.py
停止したいは ctrl + c を押して下さい
Sun Feb 14 23:26:14 2016
Sun Feb 14 23:26:19 2016
Sun Feb 14 23:26:24 2016
^Ctrapped.

以上

メモ。