• [^] # Re: Autre proposition : socket réseau

    Posté par . En réponse au message Ne lancer qu'une seule instance d'un programme. Évalué à 3.

    Verboten de verrouiller les ports réseau pour créer des locks !

    D'abord, ce sont des ressources qui n'ont rien à voir et qui sont beaucoup plus limitées qu'un fichier dans /var/lock. Ensuite, c'est faire l'hypothèse que l'application tourne dans un environnement mono-utilisateur et tout le monde sait bien que ce n'est pas le cas d'UNIX.

    Au boulot, on utilise des serveurs centralisés accessibles avec des Thin Clients. Aussi bien sous Windows que sous Linux, d'ailleurs, malgré les sessions utilisateur multiples et distinctes, seul le premier venu peut lancer certaines applis propriétaires parce que le coder a travaillé comme un cochon, et comme l'application se contente généralement d'examiner le port indépendamment de l'adresse à laquelle il est associé, on se retrouve généralement avec une machine qui a un port ouvert sur le réseau en permanence, pour rien.

    La manière normale de le faire, c'est effectivement la création d'un fichier dans /var/lock avec l'identifiant unique de l'application et son PID, de façon à pouvoir la contacter pour voir si elle existe toujours. Dans le même esprit, un socket UNIX, et pas IP, pour lui causer directement.

    Et dans tout les cas, un ramasse-miette pour faire le ménage derrière.