n'autoriser qu'une seule exécution simultanée d'un programme - Divers - Programmation
Marsh Posté le 14-06-2003 à 16:09:40
Tu peux utiliser un mutex mais faut voir le cas où le prog plante pour savoir si oui ou non le mutex est releasé...
Marsh Posté le 14-06-2003 à 16:14:41
il faut autoriser une ressource unique que tu lockes à la première instanciation et delockes à la destruction.
Marsh Posté le 14-06-2003 à 16:15:38
et prosaïquement on peut faire ça comment? (et sous système unix)
Marsh Posté le 14-06-2003 à 16:27:21
http://www.atrid.fr/telechargement/rtlinux/x194.html
et ton prog :
-teste l'état du mutex
libre -> le prog n'est pas lancé
pas libre -> y'a déjà une instance du prog
-qd tu quittes, tu le libère
Marsh Posté le 14-06-2003 à 16:28:45
euh ça c'est pour le multithreading, ça peut pas fonctionner dans mon cas
Marsh Posté le 14-06-2003 à 22:34:17
- Tu fais la liste des process
et tu regardes si ton programme y est deja.
- Tu lockes un fichier temporaire.
- Tu as une dll partagee qui a une variable
globale initialisee une seule fois quelque soit le nombre
d'instances du programme. (il faut que la dll ait sont propre contexte d'execution)
- quand tu lances ton programme tu rebootes la machine et tu fais le menage dans les scripts d'autoexecution.
LeGreg
Marsh Posté le 14-06-2003 à 22:46:01
tes solutions 1 / 3 / 4 sont pas envisageables notemment pour des petits programmes. je suis entrain de tester avec un petit segment de mémoire partagée
Marsh Posté le 14-06-2003 à 16:06:26
qu'est ce que vous utilisez pour faire ça? moi j'utilise un fichier créé au démarrage du programme, j'y mets le pid de du programme. en fin d'exécution, le fichier est détruit. si le programme plante et qu'on tente de le relancer le pid ecrit dans le fichier et la date du fichier permettent de pas rester bloquer.
mais je voudrais savoir ce qu'il existe comme autre technique