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