Programmation » Bloquer à un seul processus sous Linux
Catégorie:  
   
Bloquer à un seul processus sous Linux
Publié le 30/08/2008 @ 17:40:56,
Par zion
Bon, situation de départ:

Un process qui tourne, il spécifie son pid dans un fichier.

Je peux y rajouter ce que je veux, mutex, semaphore, ... mais je dois réussir à déterminer quand le process se lance qu'il n'en existe aucun autre du même type sans quoi il doit se suicider :grin:

Sous Windows je me souviens l'avoir déjà écrit sans soucis, sous Linux nope.

Je n'ai trouvé aucune fonction qui pourrait me donner le nom et/ou une autre info moyennant un PID pour savoir si il vit toujours.
Ou mieux, l'idéal, un moyen "simple" de créer une ressource nominative que je pourrais questionner pour sa disponibilité ou non.

Mutex? Semaphore? (je lis que les semaphores sont pas dispos sous linux inter process?). Le mutex fonctionne entre process sous Linux? Comment je peux lui spécifier un nom à celui la? :heink:
Je suis le Roy :ocube:
   
Bloquer à un seul processus sous Linux
Publié le 30/08/2008 @ 18:55:48,
Par philfr
Le mutex ne concerne que les threads, pas les process :oh:
Le sémaphore existe sous linux (man sem_init etc...), mais pour ton problème c'est vraiment pas la solution.

Au démarrage de ton process, tu regardes si le lockfile existe, si oui, tu lis le pid écrit dedans, et tu check l'existence de /proc/<pid>. Tu peux même voir si c'est bien le process que tu crois en lisant /proc/<pid>/cmdline, mais c'est sans doute déjà overkill.

Si le process existe toujours, tu exit, sinon, tu écris ton pid dans le lockfile et tu fais ton boulot...

Dernière édition: 30/08/2008 @ 18:56:05
   
Bloquer à un seul processus sous Linux
Publié le 30/08/2008 @ 19:07:33,
Par zion
Le sage a parlé, je le code dans la semaine et ça m'évitera un autre aller-retour :joce:

Merciiii :zoubi:
Je suis le Roy :ocube:
Répondre - Catégorie:  
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?