単一インスタンス アプリケーションを確立し、1 つのインスタンスのみを同時に実行できるようにすることは、ソフトウェア開発の重要な側面です。これを実現するには、ファイル ロック、ミューテックス、より高度な技術など、いくつかの方法が利用できます。
ファイル ロックの使用
一般的なアプローチは、ファイル ロックを利用することです。提供されたコード スニペットでは:
<code class="c">#include <sys/file.h> #include <errno.h> // ... int pid_file = open("/var/run/whatever.pid", O_CREAT | O_RDWR, 0666); int rc = flock(pid_file, LOCK_EX | LOCK_NB); // ...</code>
ファイル記述子 pid_file が作成され、flock() 関数を使用してロックされ、他のインスタンスがアクセスできないようにします。ロックが成功した場合 (つまり、rc == 0)、現在のアプリケーションが最初のインスタンスであることを示し、続行が許可されます。
より高度な方法
ただし、ファイルのロックには、PID ファイルが古い可能性があるなどの制限があります。これを克服するには、より高度なテクニックを使用できます。
Unix ドメイン ソケット
事前定義された名前を使用して Unix ドメイン ソケットを作成およびバインドすることで、アプリケーションは次のことを確認できます。別のインスタンスがすでに実行されています。バインドは最初のインスタンスのみ成功し、後続のインスタンスではエラーが発生します。このアプローチは、インスタンスの一意性を判断するための信頼できる方法を提供します。
その他の考慮事項
適切な方法の選択は、プラットフォーム、望ましい動作、およびアプリケーション全体の設計。場合によっては、最適な結果を得るために複数のテクニックを組み合わせることが必要になることがあります。
以上がここでは、リクエストされた質問と回答の形式に焦点を当てた、いくつかのタイトル オプションを示します。 短くて直接的: * C/C アプリケーションのインスタンスが一度に 1 つだけ実行されるようにするにはどうすればよいですか? * 単一インスタンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。