No.5ベストアンサー
- 回答日時:
セッションを超えてカーネルオブジェクトを共有したい場合,
名前にGlobal\という接頭辞を追加します。
MSDN: Kernel Object Namespaces (Windows)
http://msdn.microsoft.com/en-us/library/aa382954 …
No.4
- 回答日時:
#1です。
自説にこだわるわけではないのですが、ファイル方式が良いのでは?
簡単だし、後始末の心配も無いですからね。ネットワーク全体に
拡張しても使えますし・・・
名前付きミューテックスを使うならOpenMutexで出来ているものを
取得しますが、取得できた時点でアウトですね。取得できないとして、
ヨーイドンで複数のプロセスが同じ名前のミューテックスを作るかも
知れないから、CreateMutex後にもチェックします。
また、COMを使えるなら、ミューテックスではなく、WMIプロセス管理で
自分と同名のプロセスが2個以上ないか調べるという方法もあります。
ご返事ありがとうございます。
>自説にこだわるわけではないのですが、ファイル方式が良いのでは?
>簡単だし、後始末の心配も無いですからね。ネットワーク全体に
>拡張しても使えますし・・・
ファイル形式の場合、途中で強制終了とかした場合、ファイルが
残りっぱなしになるので、怖いのです。。。
なんとかミューテックスで実現したいのです。
ご返事ありがとうございます。
No.3
- 回答日時:
やったことないので無責任だけど, GetLastError は使える?
ご返事ありがとうございます。
GetLastErrorは現在の
CreateMutex(NULL,TRUE,"EXENAME")
で使えています!!!
よろしくお願いします。
No.2
- 回答日時:
・名前「無し」ミューテックス
CreateMutex(NULL,TRUE,NULL)
・名前「付き」ミューテックス
CreateMutex(NULL,TRUE,"EXENAME")
>名前付きシステム ミューテックスにするとできるみたいなのですが、どのようにすればよいのでしょうか?
ミューテックスを使おうとすると、接続する方ではなく、接続された方で排他制御しなければなりません。
そうすると「サービスとして接続を提供する」など、かなり複雑な処理をしないとなりません。
であれば、他の回答のように「接続する方が、接続される端末にあるファイルを排他モードで開いてみる」と言う方法を取るしかないでしょう。
具体的な動作を参考にするなら「Microsoft Accessが、データベースファイル(mdbファイル)をオープンした時に作られる、ロックファイル(ldbファイル)の働き」を調べてみると良いでしょう。
私の書き方の間違いでたいへんもうしわけございません。
>ローカルコンピュータ単位で排他制御をかけたいのです。
ですが、1つのコンピュータでそのEXEは1個しか起動できないようにしたいということなのです。
複数のコンピュータ間で、1つだけというのではないのです。。。。
現在
CreateMutex(NULL,TRUE,"EXENAME")
で、AユーザでEXEを2個起動しようとしたらエラー。
Aユーザで1個。Bユーザで1個は起動OKな状態を
Aユーザで1個起動していれば、Bユーザで起動しようとしたらエラーと
したいのです。。。
お手数ですがよろしくお願いします。
No.1
- 回答日時:
同一マシン内の異なるプロセス間で排他制御するなら分かるんですが、
異なるマシン間でミューテックスによる制御って、上手くいくんです
かね?聞いたことがないなぁ。
私の使っている手は各PCから参照できるファイルを排他モードで開く
という方法です。
尚、名前付きミューテックスは掲題の通り、第3パラメータに有効な
名前を指定するだけで作成できます。
私の書き方の間違いでたいへんもうしわけございません。
>ローカルコンピュータ単位で排他制御をかけたいのです。
ですが、1つのコンピュータでそのEXEは1個しか起動できないようにしたいということなのです。
複数のコンピュータ間で、1つだけというのではないのです。。。。
現在
CreateMutex(NULL,TRUE,"EXENAME")
で、AユーザでEXEを2個起動しようとしたらエラー。
Aユーザで1個。Bユーザで1個は起動OKな状態を
Aユーザで1個起動していれば、Bユーザで起動しようとしたらエラーと
したいのです。。。
お手数ですがよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL ServerのストアドでOUTPUT...
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
PL/SQLのコンパイルエラーにつ...
-
batファイルでのSQL(oracle)...
-
リストアとリカバリの違い
-
ORA-29280:無効なディレクトリ...
-
RMANを使用してのバックアップ...
-
ストアドファンクションの実行
-
ORA-01843: 指定した月が無効で...
-
ビューが作成できない
-
EXPコマンドでDIRECT=Yの弊害は?
-
ウイルスバスター2004 隔...
-
ORA-06502のエラー
-
datetime型のインポートについて
-
Oracle DataPumpでの移行
-
sysauxの読み方について
-
PL-SQLでORA-01013エラー
-
SQL*Plusで、コマンドの返答を...
-
PHPからODBCによるOracle10gへ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL ServerのストアドでOUTPUT...
-
VBでストアドの戻りパラメータ...
-
REDOログファイルを移動したい...
-
Console.ReadLine()で、入力デ...
-
MMAPのMAP_SHAREDについて
-
SQL*LoaderのDATA引数
-
インラインフレームでpdfフ...
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
PL/SQLのコンパイルエラーにつ...
-
DOSプロンプトとコマンドプロン...
-
PL/SQL PLS-00103エラーについて
-
4GB = 4096MB ではない?
-
PL/SQLでログを確認したい。
-
Oracleの起動時に、マウントし...
-
SQL*Plusで、コマンドの返答を...
-
「ORA-00907: 右カッコがありま...
-
はじめまして!
-
PCC-S-02201エラーの対処を教え...
-
表領域の作成について
おすすめ情報