#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc,char *argv[]) {
pid_t pid;
int status;
pid = fork();
switch(pid) {
case -1: // erreur
exit(1);
case 0: // fils
printf("FILS: je travaille\n");
for (int i=0; i<5; i++) {
printf("i=%d\n",i);
sleep(1);
}
printf("FILS: j'ai terminé mon travail\n");
exit(0);
break;
default: // père
printf("PERE: Je vais attendre %d\n",pid);
waitpid(pid,&status,0);
if (WIFEXITED(status)) {
printf("Il s'est terminé normalement en faisant appel à exit(%d)\n",WEXITSTATUS(status));
} else {
printf("Il a terminé bizarrement\n");
}
printf("PERE: C'est la fin pour moi\n");
break;
}
exit(0);
}