From 5be6cfe57ac268044367d66d13342e89ecdcda1f Mon Sep 17 00:00:00 2001 From: Dennis Eckerskorn Date: Tue, 24 Sep 2024 17:01:18 +0000 Subject: [PATCH] Archivos Subidos manualmente --- p1.c | 12 ++++++++++++ p2.c | 26 ++++++++++++++++++++++++++ p3.c | 29 +++++++++++++++++++++++++++++ p4.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 p1.c create mode 100644 p2.c create mode 100644 p3.c create mode 100644 p4.c diff --git a/p1.c b/p1.c new file mode 100644 index 0000000..92c8827 --- /dev/null +++ b/p1.c @@ -0,0 +1,12 @@ +#include +#include + +void main(void) { + pid_t id_actual, id_padre; + id_actual = getpid(); + id_padre = getppid(); + + printf("Mi PID es: %d\n", id_actual); + printf("El PID de mi papa es: %d\n", id_padre); + +} diff --git a/p2.c b/p2.c new file mode 100644 index 0000000..caaad93 --- /dev/null +++ b/p2.c @@ -0,0 +1,26 @@ +#include +#include +#include + +void main(void) { + pid_t id_actual, id_padre, pid; + + pid = fork(); + + 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 + // proceso + if (pid == 0) { // Nos encontramos en el hijo + printf ("Soy el proceso hijo\n\t"); + printf(" Mi PID es %d, y el mi papa %d\n",getpid(),getppid()); + } else { // Nos encontramos en el padre + printf("Yo soy el padre de la criatura:\n\t"); + printf("Mi PID es %d, el de mi padre (abuelo de la criatura) es %d.\n\t", + getpid(),getppid()); + printf("Mi hijo si es de verdad hijo mio deberia tener el PID %d.\n",pid); + } + exit(0); +} \ No newline at end of file diff --git a/p3.c b/p3.c new file mode 100644 index 0000000..571b759 --- /dev/null +++ b/p3.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include +#include + +void main(void) { + pid_t id_actual, id_padre, pid; + + pid = fork(); + + 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 + // proceso + if (pid == 0) { // Nos encontramos en el hijo + printf ("Soy el proceso hijo\n\t"); + printf(" Mi PID es %d, y el mi papa %d\n",getpid(),getppid()); + } else { // Nos encontramos en el padre + id_actual = wait(NULL); + printf("Yo soy el padre de la criatura:\n\t"); + printf("Mi PID es %d, el de mi padre (abuelo de la criatura) es %d.\n\t", + getpid(),getppid()); + printf("Mi hijo si es de verdad hijo mio deberia tener el PID %d.\n",pid); + } + exit(0); +} \ No newline at end of file diff --git a/p4.c b/p4.c new file mode 100644 index 0000000..9e63fa1 --- /dev/null +++ b/p4.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include +void main(void) { + pid_t pid, Hijo_pid, pid2, Hijo2_pid, id_actual; + 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 + // proceso + 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"); + 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\t"); + printf("Mi PID es %d, el de mi padre (Sistema Operativo) es %d.\n\t", 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