<pre> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #include <stdlib.h> int i = 0; int main() { pid_t p_ret,p_ch; int status; if ( (p_ch = fork()) == 0 ) {/* figlio */ printf("Figlio: fork ha ritornato %d\n",p_ch); printf("Figlio: il pid del figlio e' %d\n",getpid()); printf("Figlio: il pid del padre e' %d\n",getppid()); i = 5; printf("Figlio: i vale %d\n",i); printf("Figlio: situazione processi\n"); system("ps j"); sleep(2); printf("Figlio: exit()\n"); exit(7); /* restituisco 7 come codice di ritorno */ } /* padre */ sleep(1); printf("Padre: fork ha ritornato %d : questo e' il pid del figlio\n",p_ch); printf("Padre: il pid del padre e' %d\n",getpid()); printf("Padre: i vale %d\n",i); printf("Padre: comincia la wait\n"); p_ret = wait(&status); printf("Padre: wait ha ritornato %d\n",p_ret); if (WIFEXITED(status)) { printf("Padre: codice di ritorno di child %d\n",WEXITSTATUS(status)); } if (WIFSIGNALED(status)) { printf("Padre: segnale che ha terminato child %d\n",WTERMSIG(status)); } /* il caso seguente puo' verificarsi solo usando la waitpid() con WUNTRACED, non la wait() che si bloccherebbe */ if (WIFSTOPPED(status)) { printf("Padre: segnale che ha causato lo stop di child %d\n",WSTOPSIG(status)); } return 0; } </pre> -- Users.AntonioValletta - 10 Dec 2001 <br>
This topic: Sistemioperativi1
>
EsempioFork
Topic revision: r1 - 2001-12-10 - AntonioValletta
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback