Académique Documents
Professionnel Documents
Culture Documents
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(void) {
int x = 10;
int pid = fork();
if (pid==-1) {
printf("Echec du fork()\n");
exit(-1);}
if (pid == 0) { x=x+3; sleep(5);}
else { x=x-3;
printf("le pere attend la fin du fils\n");
wait(NULL);}
printf("Processus %d : La valeur de x : %d \n",getpid(),x);
exit(0);
}
Processus : waitpid()
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
main(void) {
if (pid1 == 0) {
sleep(4) ;
printf("Le processus a fini sont exécution .(%d) \n",getpid());
return 0 ; }
int pid2 = fork();
if (pid2< 0) {
printf("Error ");
return 2 ; }
if (pid2 == 0) {
sleep(1) ;
printf("Le processus a fini sont exécution .(%d) \n",getpid());
return 0 ;
}
int pid1_res = Waitpid(pid1,NULL,0) ;
printf("En attente de .(%d) \n", pid1_res);
int pid2_res = Waitpid(pid2,NULL,0) ;
printf("En attente de .(%d) \n", pid2_res);
return 0 ;
}
Waitpid(pid2,NULL, WNOHANG)
Waitpid(pid2,NULL,WIFCONTINUED(status))