Programmation » Bloquer à un seul processus sous Linux
Bloquer à un seul processus sous Linux
Publié le 30/08/2008 @ 17:40:56,
Par zionBon, 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
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?
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
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?
Je suis le Roy
Bloquer à un seul processus sous Linux
Publié le 30/08/2008 @ 18:55:48,
Par philfrLe mutex ne concerne que les threads, pas les process
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
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 zionLe sage a parlé, je le code dans la semaine et ça m'évitera un autre aller-retour
Merciiii
Merciiii
Je suis le Roy