Comment détecter qu'une instance d'un pgm est déjà lancé [C/C++/UNIX] - Programmation
Marsh Posté le 07-02-2002 à 13:11:39
ha sous unix ? dans le mail que j'ai reçu t'avais pas précisé  
 
Marsh Posté le 07-02-2002 à 13:14:19
ouais sorry, mais n'oublie jamais que je suis un "Unix guy" maintenant ;-)
Marsh Posté le 07-02-2002 à 13:22:58
je sais pas si ça peut t'aider : 
 
en bash :  
status "path/pgm" > /dev/null 
ERR=$? 
if [ "$ERR" != 0 ]; then 
 echo "is not running" 
else 
 echo "is running" 
fi 
 
sinon en shell 
ps aux | grep pgm | grep -v "grep" 
Marsh Posté le 07-02-2002 à 13:26:08
Merci, mais j'ai besoin de ça en C...   :-((
 :-(( 
Pour le shell j'avais trouvé   
   
 
Marsh Posté le 07-02-2002 à 15:59:41
Bon, j'ai une petite solution ici, c peut être pas trop trop élégant mais ça fonctionne   
   
  
 
#include <stdio.h> 
#include <stdlib.h> 
#include <signal.h> 
#include <unistd.h> 
 
static char pgm_name[256]; 
 
static void sig_int(int signo) 
{ 
  char cmd[255]; 
  sprintf(cmd, "chmod +x %s", pgm_name); 
  system(cmd); 
 
  exit(0); 
} 
 
main(int argc, char *argv[]) 
{ 
  char cmd[255]; 
  strcpy(pgm_name, argv[0]); 
  sprintf(cmd, "chmod -x %s", pgm_name); 
  system(cmd); 
 
  signal(SIGINT, sig_int); 
 
  while(1) 
  { 
    printf("%s toujours vivant!\n", argv[0]); 
    sleep(1); 
  } 
} 
Marsh Posté le 07-02-2002 à 13:07:23
Ouais, qqun pourrait me dire comment on peut faire ceci en C sous unix :
J'ai lancé le prog toto et il tourne, je veux relancer une instance de ce même programme mais toto (le deuxième) doit me répondre : "mais je suis déjà lancé mon vieux !".
Enfin vous voyez quoi ...
Merci Merci Merci
@+
---------------
RobRipper