(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/>