2016-10-23 7 views
0

Unix環境で古くなったpidファイルを検出する標準的なクロスプラットフォームの方法は何ですか?アプリケーションの古いインスタンスを削除したいとしますが、そのアプリケーションがすでに終了している場合は、同じPIDを持つ無関係なプロセスを中断したくはありません。Unix環境で失効したpidファイルを検出する

は今、私は私のUbuntu(そしておそらく他のGNU/Linuxベースのシステム)上でそれを行う方法を発見した - 以下の擬似コード:

if (mtime(pid_file) < mtime("/proc/"+pid)) { 
    /* process started AFTER the file creation */ 
    /* so it's not what we're looking for */ 
    unlink(pid_file); 
    return 0; 
}; 
/* proceed to kill & do all stuff */ 

しかし、他のシステムで、このようなハック作業をしませんか?とにかく、それは30年以上知られている解決策の標準的なタスクでなければなりません。

同様の質問が見つかりましたhere、私の質問に明確な答えを見つけることに失敗しました。

ありがとうございます。

答えて

1

/proc/dateのファイル時間をat least 1991に戻します。 p。を参照してください。 mtimeは(例えばtouch -m --date=<needed_date> <target_file>を介して)偽装することはできますが、ユーザーランドアプリケーションの場合は、それ自身の/ proc /エントリでは実行できません。

関連する問題