From a0ceb35bbf9b3921e6268aef572cac2ef8046880 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 29 Sep 2023 19:02:19 +0200 Subject: [PATCH] Upload Ejercicio Fork 3 --- Fork | Bin 0 -> 16216 bytes Fork.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 11 +++++++++++ 3 files changed, 59 insertions(+) create mode 100755 Fork create mode 100644 Fork.c create mode 100644 README.md diff --git a/Fork b/Fork new file mode 100755 index 0000000000000000000000000000000000000000..9e6cdfe9a5dab730f1e4201602c37016742d1f18 GIT binary patch literal 16216 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 +#include +#include +#include +#include +void main(void) +{ + pid_t pid, id_actual, Hijo_pid, pid2, Hijo2_pid; + pid = fork(); // Soy el abuelo e intento crear a mi hijo + if (pid == -1) + { // Hubo error + printf("Hubo un problema de impotencia al crear el hijo"); + exit(-1); + } + // Si todo va bien y se crea el hijo tenemos que hacer + // que el programa ejecute un código con distinto para cada + if (pid == 0) + { + // Nos encontramos en el hijo + pid2 = fork(); // soy el hijo y creo al nieto + switch (pid2) + { + case -1: // error + printf("No se ha podido crear el proceso nieto en el hijo\n"); + exit(-1); + break; + case 0: // Estoy en el nieto + printf("\t\tSoy el proceso NIETO %d, Mi padre es = %d \n", getpid(), getppid()); + break; + default: // proceso padre + Hijo2_pid = wait(NULL); // espero a que termine nieto, que es mi hijo. + printf("\t\tSoy el proceso HIJO %d, Mi padre es = %d \n", + getpid(), getppid()); + printf("\tMi hijo: %d terminó.\n", Hijo2_pid); + } + } + else + { + // Nos encontramos en el abuelo + id_actual = wait(NULL); // Espero a que termine mi hijo, que a su vez espera que termine el nieto + printf("Yo soy el abuelo de las dos criaturas anteriores:\n"); + printf("Mi PID es %d, el de mi padre (Sistema Operativo) es %d.\n", getpid(), getppid()); + printf("Mi hijo si es de verdad hijo mio deberia tener el PID %d.\n", pid); + printf("A mi nieto no lo puedo conocer, solo reconozco a mi generación inmediata\n"); + printf("Para conocer a mi NIETO debería implementar algún sitema de comunicación entre procesos.\n"); + exit(0); + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..6192f82 --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# 3ºEjercicio Fork +~~~ +Soy el proceso NIETO 72781, Mi padre es = 72780 + Soy el proceso HIJO 72780, Mi padre es = 72779 + Mi hijo: 72781 terminó. +Yo soy el abuelo de las dos criaturas anteriores: +Mi PID es 72779, el de mi padre (Sistema Operativo) es 72447. + Mi hijo si es de verdad hijo mio deberia tener el PID 72780. + A mi nieto no lo puedo conocer, solo reconozco a mi generación inmediata + Para conocer a mi NIETO debería implementar algún sitema de comunicación entre procesos. +~~~