(Courriels de diversion: <nucleaires@calculettes-susnomme.com> <skiait@resultant-insinuants.com> <repartiras@pacifions-vexons.com> <gercee@deboucheront-contresignerons.com> <exprimables@etranglements-vengerez.com> <glaiseux@affrontait-grefferions.com> <meugla@impures-herissais.com> <seropositive@gouter-jumelleriez.com> <flasques@majoraient-saris.com> <cautionnerait@decollerez-atteignions.com> )
On Tue, Nov 02, 1999 at 03:06:30PM +0100, Tonton Th wrote: > Foucher Laurent wrote: > > > > Je cherche une astuce pour savoir si un processus dont je connais le pid > > est en train de s'exécuter > > ou s'il a terminé. > > man kill > If sig is 0, then no signal is sent, but error checking is still > performed. > ??? Non il n'y a pas erreur :-), c bien ca, en fait c utiliser pour tester l'existence d'un process Du point de vu progra. systeme, mis a part en explorant la table des process (via la table définie dans /sys/sched.h) je ne connais pas de fonction qui teste l'existence d'un process, mais bon , on peut toujours exécuter un peu comme kill, une fonction qui accepte en parametre un num de pid et tirer profit de la valeur de retour (exemple : sched_setscheduler(pid_t pid....etc) Ci-joint un exemple que j'avais justement sous la main :-)
#include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #include <signal.h> void main (void) { pid_t pid; int status; switch (pid = (fork ())) { case 0: /* code du fils */ while (1) { printf ("Fils:%d executing\n", getpid()); sleep (1); } default: /*code du père */ sleep (10); printf ("Pere, pid fils %d executing\n", pid); if (kill (pid, 0) == -1 ) printf ("Fils:%d inexistant\n", pid); else { printf ("Envoi du signal SIGUSR1 au processus %d\n", pid); kill (pid,SIGUSR1); } pid = waitpid (pid, &status, 0); printf ("Status du fils %d : %d\n", pid, status); /* on doit avoir 10 ; cf kill -l pour SIGUSR1 */ } }
--------------------------------------------------------------------- Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://savage.iut-blagnac.fr/>