SRMのとき使ってるスクリプト

最近eclipse使ってコーディングするようになったけど、自分の貧弱な計算機ではeclipse上でプログラムをコンパイル、実行するのは重くてやってられない。なのでコンパイル、実行は端末上でやることにした(何でIDE使ってるんだっけ)。以下のファイルに適当に名前(check.pyとか)付けて実行権限もつけてやって、端末上で./check.py hoge.cppとかするとファイルが更新される度にコンパイル、実行をする。最適化はお好みで。
Runtime Errorのとき勝手にgdb開くようにしたいけど、なんか正常に終了できない。プロセス管理とかの知識が全くなくてアレ。そもそもgdb立ち上げるくらい自分でやれよと。

#!/usr/bin/python
import subprocess
import sys
import os
import time

def compile(programFileName):
    return subprocess.call(['g++', '-g', programFileName])==0

def test():
    return subprocess.call(['./a.out'])==0

def run(programFileName):
    mtime = 0
    while(True):
        ctime = os.stat(programFileName).st_mtime
        if(mtime < ctime):
            mtime = ctime
            subprocess.call(['clear'])
            print('compiling ...')
            if not compile(programFileName):
                print('compile error')
                continue
            print('running ...')
            if not test():
                subprocess.call(['gdb', './a.out'])
                continue
            print('finished')
        time.sleep(1)

if __name__ == '__main__':
    run(sys.argv[1])