Poster une réponse à un sujet: Bloquer à un seul processus sous Linux
Attention, ce sujet est un sujet ancien (5922 jours sans réponse)
zion
Le sage a parlé, je le code dans la semaine et ça m'évitera un autre aller-retour
Merciiii
Merciiii
philfr
Le 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...
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...
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
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?