Maison > développement back-end > C++ > le corps du texte

Comment garantir qu'une seule instance d'une application C/C s'exécute à la fois ?

Barbara Streisand
Libérer: 2024-11-01 05:28:27
original
409 Les gens l'ont consulté

How to Ensure Only One Instance of a C/C   Application Runs at a Time?

Création d'applications à instance unique avec C ou C

Pour garantir qu'une seule instance d'une application s'exécute simultanément, il existe différentes techniques à considérer . Voici quelques options et leurs avantages :

Verrouillage de fichiers :
Une approche consiste à utiliser le verrouillage de fichiers. Un fichier unique est créé par l'application, et lors de son exécution, elle acquiert un verrou exclusif sur ce fichier. Si une autre instance tente de s'exécuter, elle ne parviendra pas à acquérir le verrou, indiquant qu'une instance est déjà en cours d'exécution.

Mutex :
Les mutex sont des objets de synchronisation qui autorisent plusieurs threads ou processus. pour accéder en toute sécurité aux ressources partagées sans conflits. Dans ce cas, un mutex peut être utilisé pour contrôler l'accès à l'application en cours d'exécution. Lorsque la première instance acquiert le mutex, toutes les instances suivantes seront bloquées jusqu'à ce que le mutex soit libéré.

Socket de domaine Unix :
Création et liaison d'un socket de domaine Unix avec un nom unique est une autre méthode. La première instance de l'application se lie avec succès au socket. Lorsqu'une autre instance tente de se lier au même nom, elle échoue et peut se connecter au socket existant pour communiquer avec la première instance.

Exemple d'implémentation :

Voici un exemple d'implémentation utilisant le verrouillage de fichiers :

<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>
Copier après la connexion

Cette approche garantit qu'une seule instance de l'application est en cours d'exécution et présente l'avantage de pouvoir gérer les fichiers obsolètes. fichiers pid.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!