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 31 32
| #include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/wait.h>
void f() {
int pid;
int status;
switch(pid=fork()) {
case -1: // Erreur
fprintf(stderr, "Erreur fork() - %s\n", strerror(errno));
break;
case 0: // Fils
printf("\tJe suis le fils %d de %d\n", getpid(), getppid());
sleep(10);
exit(123);
break;
default: // Pere
sleep(1); // Pour être sûr que le fils sera lancé avant le père
printf("Je suis le pere %d de %d\n", getpid(), pid);
// Attente fin fils
int p=wait(&status);
printf("Fils %d(=%d) terminé (%d)\n", p, pid, WEXITSTATUS(status));
}
}
int main() {
f();
} |
Partager