Dans le cadre d'un projet, je devais mettre en place un système multi-agents sur un réseau très sécurisé. Le problème que je rencontrais est que les utilisateurs avaient tendance à lancer plusieurs fois mon programme, ce qui n'est pas terrible. La plupart des solutions proposés pour éviter cela sont soit pas très élégante, soit ont des failles.
Par socket : nous crééons un serveur sur un port particulier. Problèmes : pas très élégant, et sur un réseau sécurisé, n'est pas adéquate
Par verrouillage de fichier : nous faisons un lock sur un fichier en local du programme. Problèmes : lorsque nous n'avons pas les droits d'écritures, ou lorsque le programme est interrompu violemment
Une troisiéme solution consiste de créer en natif un programme palliant cette solution, sauf que je recherchais une solution multiplateforme, et qui ne me demande pas trop de formation (je suis null en C/C++ .. faudrait que je m'y penche un jour ...)
Et j'ai eu une petite idée : accéder au répertoire temporaire du système (où normalement, nous avons toujours le droit d'accès et d'écriture), créer u fichier qui se détruit à la fin du programme. Ainsi, si le fichier n'est pas créé, alors nous pouvons lancer le programme. Sinon, nous devons le stopper. Par contre, si nous l'arrêtons brutalement, il rsique ne plus amrcher :/
Je vous propose donc ma solution. Elle ne résoud pas tous les problèmes lié à ce sujet mais aide quand même pour un très grand nombre de cas :)