From 7884716cc7bcd5991e6df5024120e3cf29aef9e5 Mon Sep 17 00:00:00 2001 From: Gaby <130728678+gamit16@users.noreply.github.com> Date: Thu, 19 Oct 2023 21:27:28 -0600 Subject: [PATCH] Create A01644045.c Tarea 1.5 Simple Terminal (fork/exec) --- labs/03/A01644045.c | 73 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 labs/03/A01644045.c diff --git a/labs/03/A01644045.c b/labs/03/A01644045.c new file mode 100644 index 00000000..3c55f641 --- /dev/null +++ b/labs/03/A01644045.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include +#include +#include + +int main() { + int opcion; + int pid; + + do { + + printf("Menú:\n"); + printf("1. Opción 1\n"); + printf("2. Opción 2\n"); + printf("3. Opción 3\n"); + printf("4. Salir\n"); + printf("Seleccione una opción: "); + + + scanf("%d", &opcion); + + + switch (opcion) { + case 1: + pid = fork(); + if (pid == 0) { + + execlp("/bin/ls","ls",NULL); + } else if (pid > 0) { + + wait(NULL); + } else { + printf("Error al crear el proceso hijo.\n"); + } + break; + case 2: + pid = fork(); + if (pid == 0) { + + execlp("/bin/pwd","pwd",NULL); + } else if (pid > 0) { + + wait(NULL); + } else { + printf("Error al crear el proceso hijo.\n"); + } + break; + case 3: + pid = fork(); + if (pid == 0) { + + execlp("/bin/date","date",NULL); + } else if (pid > 0) { + + wait(NULL); + } else { + printf("Error al crear el proceso hijo.\n"); + } + break; + case 4: + printf("Saliendo del programa. ¡Hasta luego!\n"); + break; + default: + printf("Opción no válida. Por favor, selecciona una opción válida.\n"); + } + + } while (opcion != 4); + + return 0; +} +