M-FalconSkyの日記: 方法がわからない 6
日記 by
M-FalconSky
Windowsでシングルインスタンスを実行する方法はいくつかあると思う。
自分はMutexでやった。
これはリブートすれば残ることはないはず。
現在ちょっとしたツールを使っているのだが、ある拍子に「起動している」情報がのこったようだ。
リブートしても消えない(なのでMutexじゃないと思う)ので、困るのだが、解消方法がわからない....
うーん。
Windowsでシングルインスタンスを実行する方法はいくつかあると思う。
自分はMutexでやった。
これはリブートすれば残ることはないはず。
現在ちょっとしたツールを使っているのだが、ある拍子に「起動している」情報がのこったようだ。
リブートしても消えない(なのでMutexじゃないと思う)ので、困るのだが、解消方法がわからない....
うーん。
コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell
別のツールに乗り換える (スコア:2)
ふつーに考えて分からないような方法でsingletonを実装しているのは、何かと信用しがたいしね:b
reboot しても残るなら non-volatile (スコア:1)
non-volatile ならきっとファイル。
何かのファイル(多分、ファイル名固定)をopen(2)の際に O_CREATE|O_EXCLを flagに指定してやると、すでにファイルが存在している場合は、エラーで返ってくる。
多分それをみてチェックしているだけだから、該当するファイルを消せば良い。
# あ…その説明だと POSIX か…でも Windows でも確か同じ事ができた。
fjの教祖様
Re:reboot しても残るなら non-volatile (スコア:1)
ですよね、やっぱり。
ただ、そのロックファイルがどこにあるやら
# process explorerとかで見れるかなぁ?準備しないとだめか。
M-FalconSky (暑いか寒い)
Re:reboot しても残るなら non-volatile (スコア:1)
あ、Windowsの場合、レジストリの危険性があるのを忘れてました。
ほとんどありえないとは思うんですが…
仮に違ったとしても、ロックファイルがレジストリにパス名でかいてある可能性は結構あるので、レジストリを見てみる価値はあります。
あとは process monitor ですかね、汎用的なのは:
http://technet.microsoft.com/ja-jp/sysinternals/bb896645 [microsoft.com]
fjの教祖様
Re:reboot しても残るなら non-volatile (スコア:1)
ありがとうございます。
調べてみますね。
# ポータブル用ランチャでレジストリは汚さないはずですので、そっちは大丈夫かも...ですが。
M-FalconSky (暑いか寒い)
合わせて持ちたい(Re:reboot しても残るなら non-volatile) (スコア:0)
Process Monitor [microsoft.com]
File/Registoryのアクセスを記録してくれます。