認証プロセスを含むいくつかのプロセスを持つアプリケーションがあります。接続が確立され、認証が成功した場合、認証の起動を防ぐ必要があります。この動作を実装するにはどうすればよいですか? プラットフォーム - Linux。
質問する
31 次
2 に答える
0
同じアプリケーションがすでに実行されているプロセスをチェックインするだけです。使用する言語に応じて、高度なチェック、リソースのロックなどを実行できる強力なライブラリがあります。
最も簡単な解決策は、プログラムが実行中であることを示すロック ファイル (たとえば /tmp 内) を作成し、そのようなファイルがプログラムの先頭に存在するかどうかを確認することです。この方法の短所は、アプリがクラッシュした場合でもロック ファイルが削除されることを確認する必要があることです。
于 2013-04-23T08:45:52.643 に答える
0
共有セマフォと小さな共有メモリを利用できます。mutex
セマフォと共有メモリを呼びましょうbool is_authenticated
。値 1 と値 false でmutex
初期化されます。is_authenticated
次に、認証プロセスは次のようになります。
wait(mutex);
if (!is_authenticated)
authenticate();
is_authenticated = true;
signal(mutex);
その後、認証の有効期限に注意する必要があります。したがって、セッションが終了したら:
wait(mutex);
assert(is_authenticated == true); /* if not, you have been compromised */
deauthenticate();
is_authenticated = false;
signal(mutex);
于 2013-04-23T08:51:06.640 に答える