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

Patricia Arquette
Lepaskan: 2024-10-26 16:44:30
asal
369 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!