-3

リモートホストで、3つのプログラム A 、 B 、 C を実行したいのですが、それらを別の時間に実行したいので、 A が実行されている場合、 B と C は実行できません

私の考えは、プロセス間のミューテックスロックのように、これらのプログラム間にミューテックスロックを作成することです

最初のアイデアは、ミューテックスを作成することです。たとえば、A が実行されているとき、B と C がアクセスしたり書き込みをしたりできないようにロックすると、B と C はプログラムが実行されていることを認識し、次のようになるまで待機します。ものはブロックされていません

ものはファイルか何かかもしれません

誰でもいくつかのアイデアを与えることができますか?次のようなシェルスクリプトで操作できることを願っています

 if file is unlocked; then
 lock file
./programA
 unlock file
 fi

ありがとう

4

2 に答える 2

0

ロックファイルを使用するというあなたの考えは、実際にはかなり一般的なイディオムです。通常、一度に複数のプログラムのコピーが実行されないようにするために使用されます。慣習的に、ファイルは、プログラムを識別する~/.foo_lockまたはのような名前が付けられます。~/foo/.lockfoo

これが一般的にどのように実装されているかの詳細は覚えていませんがman flock、出発点として試してみてください。これを行うオープンソースプログラムの名前を頭の中で思い出すことはできません。gnucashしかし、それは多くのメールクライアントと一緒に、そのようなプログラムになると思います.

于 2013-04-27T18:54:36.857 に答える
0

標準の pthread ミューテックスを使用できますが、 pthread_mutexattr_setpshared()関数を使用して、その属性を「プロセス共有」に明示的に初期化する必要があります。次に、共有メモリ内の他のプロセスにミューテックスを渡すことができます。

于 2013-04-27T16:50:08.057 に答える