C \ processus
pjaar
Messages postés
1
Statut
Membre
-
loupius -
loupius -
Bonjour,
voici un code que je viens d'écrire:
je voudrais afficher le pid de chaque fils qui se termine dans la dernière boucle, quelqu'un pourrait-il m'aider?
voici un code que je viens d'écrire:
int tempo,x,a,status;
srand(time(NULL));
printf("Veuillez introduire un nombre entier entre 1 et 10:\n");
int n = 0;
while(n <1 || n >9)
{
scanf ("%d", &n);
}
printf("Nombre introduit: %d\n",n);
for (x=0 ; x<n; x++)
{
tempo = (rand()%3)+1;
printf("P: Creation du fils %d\n",x+1);
a = fork();
if (a<0) return 1;
if (a == 0)
{
printf("\t\tJe suis le fils %d de pid %d\n",x+1,getpid());
sleep(tempo);
exit(x);
}
}
for(x=0;x<n;x++)
{
wait(&status);
if(WIFEXITED(status)) printf("P: Le fils num %d de pid se termine\n",WEXITSTATUS(status)+1);
}
return 0;
je voudrais afficher le pid de chaque fils qui se termine dans la dernière boucle, quelqu'un pourrait-il m'aider?
A voir également:
- C \ processus
- Processus hote windows rundll32 c'est quoi ✓ - Forum Windows
- Processus rundll32.exe au démarrage - 50% CPU - Forum Virus
- Quest ce que Processus hôte windows(Rundll32) ✓ - Forum Logiciels
- Processus inactif du systeme ✓ - Forum Windows
- Echec de l'initialisation du processus de connexion interactive - Forum Windows
1 réponse
man 2 wait te donnera pid_t wait(int *status); avec pid_t qui est le PID du processus fils qui est terminé.
Utiliser une boucle 'for' pour contrôler la fin de l'exécution des processus fils n'est pas, à mon avis, un bon choix; je préfère quelque chose du style:
Bonne continuation.
Utiliser une boucle 'for' pour contrôler la fin de l'exécution des processus fils n'est pas, à mon avis, un bon choix; je préfère quelque chose du style:
while ((pid = wait(&status))
printf("%u s'est terminé avec le code %d\n", pid, status);J'ai simplifié, car en fait, comme tu pourras le lire dans le 'man', l'interprétation de 'status' doit se faire avec des macros.
Bonne continuation.