_Faust_ Burn-out général | Vous en pensez quoi? il me semble que c'est pas très clair...
-crée N processus fils,
-se met en attente de ces N processus fils,
-visualise leur identité (Pid_Fils ) au fur et à mesure de leurs terminaisons.
-visualise son pid et celui de son père,
-se met en attente pendant 2*i secondes,visualise la fin de l'attente,
-met fin à sa propre existence par envois d?un signal d?interruption à lui même.
Code :
- #include <signal.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- static void
- usage (command_name)
- {
- printf ("usage : %s nombres de fils\n", command_name) ;
- exit (1) ;
- }
- static void
- un_fils (void)
- {
- pid_t pid;
- int epid, fpid ;
- epid = getpid () ;
- fpid = getppid ();
- printf("\nIdentite de l'enfant : %d",epid);
- printf("\nIdentite du pere : %d\n",fpid);
- (void) sleep (2) ;
- }
- int main (int argc, char *argv [])
- {
- int N ;
- int i ;
- if (argc != 2) usage (*argv) ;
- N = strtol (argv[1], NULL, 10) ;
- printf ("Creation de %d fils\n", N) ;
- /* On lance N fils */
- for (i=0 ; i<N ; i++)
- switch (fork ()) {
- case -1 :
- perror ("Fork" ) ;
- exit (1) ;
- case 0 : /* le fils */
- un_fils () ;
- /* erreur un fils revient ! */
- exit (1) ;
- }
- printf("\nMise en attente pendant 2 secondes des processus fils \n" );
- /* On attend les fils (qui se font tuer...) */
- for (i=0 ; i<N ; i++) {
- int status ;
- pid_t fils ;
- fils = wait (&status) ;
- kill(fils,SIGUSR1);
- printf ("\nLe fils s'envoie un signal pour se tuer", fils) ;
- printf ("\nLe fils %d est termine\n",fils);
- }
- /* FIN */
- printf ("\nTous les fils ont termine\n" ) ;
- }
|
|