C または C を使用した単一インスタンス アプリケーションの作成
アプリケーションのインスタンスを 1 つだけ確実に同時に実行するには、考慮すべきさまざまな手法があります。 。以下にいくつかのオプションとその利点を示します。
ファイル ロック:
1 つの方法は、ファイル ロックを使用することです。アプリケーションによって一意のファイルが作成され、アプリケーションが実行されると、このファイルに対する排他ロックが取得されます。別のインスタンスが実行しようとすると、ロックの取得に失敗し、インスタンスがすでに実行中であることを示します。
Mutex:
Mutex は、複数のスレッドまたはプロセスを許可する同期オブジェクトです。競合することなく共有リソースに安全にアクセスできます。この場合、ミューテックスを使用して、実行中のアプリケーションへのアクセスを制御できます。最初のインスタンスがミューテックスを取得すると、ミューテックスが解放されるまで、後続のインスタンスはすべてブロックされます。
Unix ドメイン ソケット:
一意の名前を持つ Unix ドメイン ソケットの作成とバインド別の方法です。アプリケーションの最初のインスタンスはソケットに正常にバインドされます。別のインスタンスが同じ名前にバインドしようとすると失敗しますが、既存のソケットに接続して最初のインスタンスと通信できます。
実装例:
ここにあります。ファイル ロックを使用した実装例:
<code class="c">#include <sys/file.h> #include <errno.h> int main() { int pid_file = open("/var/run/my_app.pid", O_CREAT | O_RDWR, 0666); int rc = flock(pid_file, LOCK_EX | LOCK_NB); if (rc) { if (EWOULDBLOCK == errno) { // Another instance is running return 1; } } else { // This is the first instance } // Perform application logic return 0; }</code>
このアプローチにより、アプリケーションのインスタンスが 1 つだけ実行されることが保証され、古い pid ファイルを処理できるという利点があります。
以上がC/C アプリケーションのインスタンスが一度に 1 つだけ実行されるようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。