hakeの日記

Windows環境でプログラミングの勉強をしています。

アプリ終了後にすぐ起動できない

シェルスクリプトでsleepを使用した場合そのsleepは別プロセスになるのですね、psで確認して初めて知った。SHOUTcastPlayerを終了させて、直ぐにアイコンをタップしても爆発アイコンのまま起動しないので原因を調べていて気がつきました。


Rubyのアプリからシェルスクリプトを起動、このシェルスクリプトは30秒毎に作業するループ構造になっているのでループ内部でsleep 30としています。Rubyアプリを終了させてpsコマンドを打ってみるとsleep 30っていうプロセスが生きていて、これが存在する間は再度Rubyアプリのアイコンをタップしても起動しない模様。処理としてはRubyアプリ終了の際にシェルスクリプトのプロセスをkillしていたんだけど、sleep 30のプロセスはそのまま生き残っていたようです。Rubyアプリ終了の際にsleep 30のプロセスもkillするようにしたら、アプリ終了後すぐのアイコンタップでも起動するようになりました。


Rubyのアプリって、そこから派生した全てのプロセスが終了するまで、再度起動できないのですね。もしかしてQCopで起動させたときだけの話なのだろうか???