Sunteți pe pagina 1din 6

EJERCICIO 1 #include <stdio.h> #include <unistd.

h> int main() { int pid; printf("PADRE: Soy el proceso padre y mi pid es: %d\n", getpid()); pid = fork(); // En cuanto llamamos a fork se crea un nuevo proceso. En el proceso // padre 'pid' contendr el pid del proceso hijo. En el proceso hijo // 'pid' valdr 0. Eso es lo que usamos para distinguir si el cdigo // que se est ejecutando pertenece al padre o al hijo. if (pid) // Este es el proceso padre { printf("PADRE: Soy el proceso padre y mi pid sigue siendo: %d\n", getpid()); printf("PADRE: Mi hijo tiene el pid: %d\n", pid); } else // Proceso hijo { printf("HIJO: Soy el proceso hijo y mi pid es: %d\n", getpid()); printf("HIJO: mi padre tiene el pid: %d\n", getppid()); } }

EJERCICIO 2 #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <stdlib.h> int main() { int pid; printf("PADRE: Soy el proceso padre y mi pid es: %d\n", getpid()); pid = fork(); // En cuanto llamamos a fork se crea un nuevo proceso. En el proceso // padre 'pid' contendr el pid del proceso hijo. En el proceso hijo // 'pid' valdr 0. Eso es lo que usamos para distinguir si el cdigo // que se est ejecutando pertenece al padre o al hijo. if (pid) // Este es el proceso padre { printf("PADRE: Soy el proceso padre y mi pid sigue siendo: %d\n", getpid()); printf("PADRE: Mi hijo tiene el pid: %d\n", pid); system("ps -l"); } else // Proceso hijo { printf("HIJO: Soy el proceso hijo y mi pid es: %d\n", getpid()); printf("HIJO: mi padre tiene el pid: %d\n", getppid()); system("ps -l"); } }

EJERCICIO 3 #include <stdio.h> int main() { int pid; printf("PADRE: Soy el proceso padre y mi pid es: %d\n", getpid()); pid = fork(); // En cuanto llamamos a fork se crea un nuevo proceso. En el proceso // padre 'pid' contendr el pid del proceso hijo. En el proceso hijo // 'pid' valdr 0. Eso es lo que usamos para distinguir si el cdigo // que se est ejecutando pertenece al padre o al hijo. if (pid) // Este es el proceso padre { printf("PADRE: Soy el proceso padre y mi pid sigue siendo: %d\n", getpid()); printf("PADRE: Mi hijo tiene el pid: %d\n", pid); system("ps -l"); sleep(20); } else // Proceso hijo { printf("HIJO: Soy el proceso hijo y mi pid es: %d\n", getpid()); printf("HIJO: mi padre tiene el pid: %d\n", getppid()); system("ps -l"); sleep(20); } }

EJERCICIO 4 #include <unistd.h> #include <stdio.h> int main() { int contador; for(contador=0;contador<5;contador++) { if(fork()==0) printf("PID del HIJO %i proceso = %i Pid padre = %i\n", getpid(),contador,getppid()); } return 0; } EJERCICIO 5 #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <stdlib.h> #include <string.h> int main() { int estado=2; int contador; //creamos un contador para controlar los procesos que queremos crear for(contador=0;contador<5;contador++) //con este bucle crearemos 5 procesos y el padre. if(fork()==0)//Creamos el hijo printf("PID del HIJO %i proceso = %i Pid padre = %i\n", getpid(),contador,getppid()); else //Si lo que devuelve el fork es distinto de cero { wait(estado);//esperamos a que termine el hijo printf("PID del HIJO %i proceso = %i Pid padre = %i\n", getpid(),contador,getppid()); exit(0); //eliminamos el proceso } }

EJERCICIO 6 #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> int main() { pid_t rf; pid_t pid_hijo; int i; int n=3; rf = fork(); switch (rf) { case -1: printf ("No se pudo crear el proceso hijo\n"); break; case 0: printf ("Soy el HIJO, mi PID es %d y mi PPID es %d \n", getpid(), getppid()); for (i=1; i < n; i++) { if ((pid_hijo = fork() ) <= 0) // break; system("ps -l"); } sleep (10); break; default: printf ("Soy el PADRE, mi PID es %d y el PID de mi hijo es %d, y el PID de mi padre es %d \n", getpid(), rf, getppid()); system("ps -l"); sleep(20); } system("ps -l"); printf ("Fin de la ejecucin de %d \n", getpid()); exit (0); }

EJERCICIO 7 // BASE PARA REALIZAR PROCESO TIPO ABANICO #include <sys/types.h> #include <stdio.h> #include <unistd.h> int main() { pid_t pid_hijo; int i; int n=4; printf("PADRE: Soy el proceso padre y mi pid es: %d\n", getpid()); for (i=1; i < n; i++) if ((pid_hijo = fork() ) <= 0) break; fprintf(stderr, "Este es el proceso %d con padre %d \n", getpid(), getppid()); } EJERCICIO 8 BASE PARA REALIZAR PROCESOS EN CADENA #include <sys/types.h> #include <stdio.h> #include <unistd.h> int main() { pid_t pid_hijo; int i; int n=4; printf("PADRE: Soy el proceso padre y mi pid es: %d\n", getpid()); for (i=1; i < n; i++) if (pid_hijo = fork() ) break; fprintf(stderr, "Este es el proceso %d con padre %d \n", getpid(), getppid()); } EJERCICIO 9 BASE PARA REALIZAR PROCESO EN ARBOL #include <sys/types.h> #include <stdio.h> #include <unistd.h> int main() { pid_t pid_hijo; int i; int n=4; printf("PADRE: Soy el proceso padre y mi pid es: %d\n", getpid()); for (i=1; i < n; i++) if (pid_hijo = fork() ) break; fprintf(stderr, "Este es el proceso %d con padre %d \n", getpid(), getppid()); }
6

S-ar putea să vă placă și