/* * fork-ex1.c : exemple d'utilisation de l'appel systeme fork() pour creer * un nouveau processus. */ #include #include #include main() { extern int errno; extern char *sys_errlist[]; pid_t pid; pid = getpid(); fprintf(stdout,"Avant le fork, pid = %d\n",pid); sleep(20); pid = fork(); /* En cas de reussite du fork, le pere et le fils poursuivent leur execution a partir d'ici. La valeur de pid permet de distinguer le pere du fils. */ switch(pid) { case -1: /* erreur dans fork() */ fprintf(stderr,"error %d in fork: %s\n",errno,sys_errlist[errno]); exit(errno); case 0: /* on est dans le fils */ fprintf(stdout,"Dans le fils, pid = %d\n",getpid()); sleep(20); /* On suspend le processus pendant 20 secondes. Cela permet d'utiliser la commande ps (p.ex. ps -gux) pour visualiser la liste des processus. */ break; default: /* on est dans le pere */ fprintf(stdout,"Dans le pere, pid = %d\n",getpid()); sleep(20); } }