Re Bonjour !
Pour ceux qui suivent mes élucubrations, j'essaye également d'apprendre par moi même à utiliser les processus. Je suis tombé sur un td non corrigé.
Exo 1 :
Ecrire un programme qui crée deux fils appelés fils1 et fils2, le père doit afficher je suis le père, le fils 1 je suis le fils 1, et le fils 2 je suis le fils 2.
Voila ce que j'ai pondu cela vous semble t'il correct, peut-on faire plus simple ? (je n'ai toujours pas testé l'echec du fork)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include <stdio.h>
#include <stdlib.h>
int main(void)
{
int fils=0;
pid_t pid;
pid=fork();
if (pid!=0) {
printf ("Je suis le père\n");
}
else {
printf("Je suis le fils numero 1\n");
fils=1;
}
if (pid!=0) {
pid=fork();
}
if ((pid==0) && (fils!=1)) {
printf("je suis le fils numero 2\n");
}
return EXIT_SUCCESS;
} |
Exo n°2 :
Ecrire un programme créant 5 fils en utilisant une boucle for. Le fils 1 doit afficher je suis le processus 1, le 2 je suis le processus 2.....
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| int main(void)
{
pid_t pid;
int fils=0,i;
printf("Je suis le pere\n");
for (i=0;i<5;i++)
{
fils++;
pid=fork();
if (pid==0)
{
printf("Je suis le processus numero : %d\n",fils);
break;
}
}
return EXIT_SUCCESS;
} |
Ce code me donne le resultat escompte :
Je suis le pere
Je suis le processus numero : 1
Je suis le processus numero : 2
Je suis le processus numero : 3
Je suis le processus numero : 4
Je suis le processus numero : 5
En revanche si j'enleve le \n dans printf ("Je suis le pere ") j'obtiens :
Je suis le pere Je suis le processus numero : 1
Je suis le pere Je suis le processus numero : 2
Je suis le pere Je suis le processus numero : 3
Je suis le pere Je suis le processus numero : 4
Je suis le pere Je suis le processus numero : 5
Pourquoi ?
D'une manière plus générale quand on réalise un fork a partir de quelle ligne le fils s'exécute t'il ? (je diraià partir du fork vu que l'environnement est transmis et donc je pense la valeur du compteur ordinal. Mais l'exemple precedent me fait douter)
Et pour finir si vous voulez que j'arrète de vous casser les pieds
Connaissez vous un site ou bouquin de programmation système qui contienne
des exos corrigés. J'aime en effet bien apprendre par la pratique.
Partager