From f2978364961dc79bca115f67933dd7f8059ec70e Mon Sep 17 00:00:00 2001 From: victor Date: Fri, 20 Oct 2023 17:32:06 +0200 Subject: [PATCH] Empezamos con python --- Pipe/pipe4 | Bin 0 -> 16336 bytes Pipe/pipe4.c | 83 +++++++++++++++++++++++++++++++++++++++++++ Python/actividad1.py | 18 ++++++++++ Python/variable.py | 1 + 4 files changed, 102 insertions(+) create mode 100755 Pipe/pipe4 create mode 100644 Pipe/pipe4.c create mode 100644 Python/actividad1.py create mode 100644 Python/variable.py diff --git a/Pipe/pipe4 b/Pipe/pipe4 new file mode 100755 index 0000000000000000000000000000000000000000..2d594d8fff6eecacc14023fff21a96c517c3322d GIT binary patch literal 16336 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 H0;2dQrzrm# literal 0 HcmV?d00001 diff --git a/Pipe/pipe4.c b/Pipe/pipe4.c new file mode 100644 index 0000000..c5c05c5 --- /dev/null +++ b/Pipe/pipe4.c @@ -0,0 +1,83 @@ +#include +#include +#include +#include +#include +#include +#include +//Abuelo-hijo-nieto +void main(void) { + pid_t pid, Hijo_pid, pid2, Hijo2_pid; + int fd1[2]; + int fd2[2]; + + // saludos de pantalla + char saludoAbuelo[]="Saludos del Abuelo al Hijo.\0"; + char saludoPadre[]="Saludos del Padre al Hijo.\0"; + char SaludoNieto[]="Saludos del nieto al Padre.\0"; + char saludoPadre2[]="Saludos del Padre al Abuelo.\0"; + char buffer[80]=""; + + pipe (fd1); + pipe (fd2); + pid = fork(); // Abuelo creando al hijo + if (pid ==-1) { + exit(-1); + } + if (pid == 0) { //Soy el hijo + // creamos al nieto + pid2 = fork(); + switch (pid2) { + case -1: + exit(-1); + break; + case 0: // Soy el nieto + // cierro fd2 como escritura; y leo de fd2 + close(fd2[1]); + read(fd2[0],buffer,sizeof(buffer)); + // Imprimo el mensaje que me mandó Hijo (mi padre) + printf("P: el nieto lee del padre ...%s",buffer); + + // Envío un mensaje a padre a través de fd1 + read(fd2[1],buffer, sizeof(buffer)); + printf("%s",saludoAbuelo); + write(fd1[1],SaludoNieto,strlen(SaludoNieto)); + // con lo que tengo que cerrar fd1 como lectura + close(fd1[0]); + break; + default: + // Soy el hijo el que tiene más faena + // Leo lo que me manda el abuelo por fd1 y lo imprimo por pantalla + read(fd1[0],buffer,sizeof(buffer)); + printf("Mi abuelo me ha mandado esto : %s",buffer); + // envio a nieto (mi hijo) por fd2 el mensaje de la variable "saludoPadre" + write(fd2[1],saludoPadre,strlen(saludoPadre)); + // me quedo esperando a que Nieto termine (mi hijo) + Hijo2_pid=wait(NULL); + // Recibo el mensaje de Nieto por fd1, y lo imprimo por pantalla + read(fd1[0],buffer,sizeof(buffer)); + printf("%s",SaludoNieto); + // Envío mensaje al abuelo a través de fd2 + read(fd1[0],buffer,sizeof(buffer)); + write(fd2[1],saludoPadre2,strlen(saludoPadre2)); + } + } else { // Soy el abuelo + + printf("Abuelo envia mensaje al hijo ...\n"); + // cierra fd1[0] para la lectura el abuelo lee por fd2[0] + close(fd1[0]); + + // escribe en fd1 saludoAbuelo, acuérdate de calcular la longitud del string. + write(fd1[1],saludoAbuelo,strlen(saludoAbuelo)); + // EL abuelo se queda esperando a que termine el hijo + wait(NULL); + // El abuelo recibe el mensaje por fd2, luego cierra fd2 en modo escritura + read(fd2[0],buffer,sizeof(buffer)); + close(fd2[1]); + // Lee de la pipe fd2, entendemos que su hijo le dejó un mensaje antes de terminar. + read(fd2[0],buffer, sizeof(buffer)); + printf("El abuelo recibe el siguiente mensaje del hijo: %s\n",buffer); + + } + exit(0); +} \ No newline at end of file diff --git a/Python/actividad1.py b/Python/actividad1.py new file mode 100644 index 0000000..a611e91 --- /dev/null +++ b/Python/actividad1.py @@ -0,0 +1,18 @@ +# fork solo funciona en unix/macos +import os +def padre(): + while True: + newpid = os.fork() + if newpid == 0: + hijo() + else: + pids = (os.getpid(), newpid) + print("Padre: %d, Hijo: %d\n" % pids) + reply = input("Pulsa 's' si quieres crear un nuevo proceso") + if reply != 's': + break + +def hijo(): + print('\n>>>>>>>>>> Nuevo hijo creado con el pid %d a punto de finalizar<<<<<' % os.getpid()) + os._exit(0) +padre() \ No newline at end of file diff --git a/Python/variable.py b/Python/variable.py new file mode 100644 index 0000000..2e8397e --- /dev/null +++ b/Python/variable.py @@ -0,0 +1 @@ +print("Hola Mundo") \ No newline at end of file