C または C での単一インスタンス アプリケーションの作成
概要:
それが 1 つだけであることの確認アプリケーションのインスタンスを同時に実行することは、さまざまなシナリオで非常に重要です。この記事では、C または C で単一インスタンスのアプリケーションを実現する方法について説明します。
ファイル ロック:
ファイル ロックは、特定のファイルに適用できます。ロックが取得されると、保持しているプロセスのみがファイルにアクセスできます。これは、アプリケーションの複数のインスタンスが実行されないようにするために使用できます。
<code class="c">#include <sys/file.h> int fd = open("lockfile", O_RDWR | O_CREAT); int res = flock(fd, LOCK_EX | LOCK_NB);</code>
ミューテックス:
ミューテックスは同期に使用されます。ミューテックスは単一のスレッドによって取得でき、ミューテックスが解放されるまで他のスレッドが共有リソースにアクセスできなくなります。
<code class="c">#include <pthread.h> pthread_mutex_t mutex; pthread_mutex_init(&mutex, NULL); pthread_mutex_lock(&mutex); // Critical section pthread_mutex_unlock(&mutex);</code>
推奨アプローチ:
一般的なアプローチ実行中のアプリケーションのプロセス ID を含むファイルである pidfile を作成することです。 pidfile がすでに存在する場合は、アプリケーションの別のインスタンスが実行中であることを示します。ただし、この方法には pidfile が古いため制限があります。
高度な方法:
より高度な方法には、Unix ドメイン ソケットまたは一意の識別子を使用して、単一の pidfile を確実に使用することが含まれます。実例。 Unix ドメイン ソケットは特定の名前にバインドでき、アプリケーションの最初のインスタンスのみが正常にバインドできます。一意の識別子を生成し、検証のために共有メモリ セグメントに保存できます。
以上がC または C で単一インスタンスのアプリケーションを作成する方法: ファイル ロック、ミューテックスなど?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。