n'autoriser qu'une seule exécution simultanée d'un programme

n'autoriser qu'une seule exécution simultanée d'un programme - Divers - Programmation

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

Reply

Marsh Posté le 14-06-2003 à 16:06:26   

Reply

Marsh Posté le 14-06-2003 à 16:06:30    

:)

Reply

Marsh Posté le 14-06-2003 à 16:07:11    

"c'est bien tu es rapide, mais est tu résistant ?"

Reply

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é... [:spamafote]

Reply

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.

Reply

Marsh Posté le 14-06-2003 à 16:15:38    

et prosaïquement on peut faire ça comment? (et sous système unix)

Reply

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

Reply

Marsh Posté le 14-06-2003 à 16:28:45    

euh ça c'est pour le multithreading, ça peut pas fonctionner dans mon cas

Reply

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

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed