Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencipta Aplikasi Satu Instance dalam C atau C : Kunci Fail, Mutexes dan Beyond?

Bagaimana untuk Mencipta Aplikasi Satu Instance dalam C atau C : Kunci Fail, Mutexes dan Beyond?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 16:44:30370semak imbas

How to Create Single-Instance Applications in C or C  : File Locks, Mutexes, and Beyond?

Membuat Aplikasi Contoh Tunggal dalam C atau C

Pengenalan:

Memastikan hanya satu contoh aplikasi berjalan serentak adalah penting dalam pelbagai senario. Artikel ini meneroka kaedah untuk mencapai aplikasi contoh tunggal dalam C atau C .

Kunci Fail:

Kunci fail boleh digunakan pada fail tertentu. Jika kunci diperolehi, hanya proses pegangan boleh mengakses fail. Ini boleh digunakan untuk menghalang berbilang kejadian aplikasi daripada dijalankan.

<code class="c">#include <sys/file.h>
int fd = open("lockfile", O_RDWR | O_CREAT);
int res = flock(fd, LOCK_EX | LOCK_NB);</code>

Mutexes:

Mutexes digunakan untuk penyegerakan. Mutex boleh diperolehi oleh satu urutan, menghalang urutan lain daripada mengakses sumber kongsi sehingga mutex dikeluarkan.

<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>

Pendekatan Disyorkan:

Pendekatan biasa adalah untuk mencipta pidfile, fail yang mengandungi ID proses aplikasi yang sedang berjalan. Jika pidfile sudah wujud, ia menunjukkan bahawa satu lagi contoh aplikasi sedang berjalan. Kaedah ini, walau bagaimanapun, mempunyai had kerana fail pid yang lapuk.

Kaedah Lanjutan:

Kaedah yang lebih maju termasuk menggunakan soket domain Unix atau pengecam unik untuk memastikan satu contoh. Soket domain Unix boleh diikat pada nama tertentu dan hanya contoh pertama aplikasi boleh diikat dengan jayanya. Pengecam unik boleh dijana dan disimpan dalam segmen memori kongsi untuk pengesahan.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Aplikasi Satu Instance dalam C atau C : Kunci Fail, Mutexes dan Beyond?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn