TP-systeme-exploitation-cen.../TP1/fournitures/ez.c

37 lines
1.1 KiB
C
Raw Permalink Normal View History

2023-06-20 18:57:09 +00:00
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h> /* exit */
int main(int argc, char *argv[]) {
int tempsPere, tempsFils;
int v=10; /* utile pour la section 2.3 */
pid_t pidFils;
tempsPere=10;
tempsFils=5;
pidFils=fork();
/* bonne pratique : tester systématiquement le retour des appels système */
if (pidFils == -1) {
printf("Erreur fork\n");
exit(1);
/* par convention, renvoyer une valeur > 0 en cas d'erreur,
* différente pour chaque cause d'erreur
*/
}
if (pidFils == 0) { /* fils */
printf("processus %d (fils), de père %d, v=%d\n", getpid(), getppid(), v);
v = 100;
sleep(tempsFils);
printf("fin du fils, v=%d\n", v);
exit(EXIT_SUCCESS); /* bonne pratique :
terminer les processus par un exit explicite */
}
else { /* père */
printf("processus %d (père), de père %d, v=%d\n", getpid(), getppid(), v);
sleep(tempsPere);
printf("fin du père, v=%d\n", v);
}
return EXIT_SUCCESS; /* -> exit(EXIT_SUCCESS); pour le père */
}