INF239 - Sistemas Operativos 1
PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
FACULTAD DE CIENCIAS E INGENIERÍA
Laboratorio Nro 2
( 2024 - 1 )
1) (14 puntos) Implemente el siguiente servidor (se le está proporcionando como modelos los archivos
shellServer.c y client.c, los cuales puede modificar a gusto)
El servidor crea un socket en el dominio AF_UNIX y acepta pedidos conteniendo comandos del shell.
Cada cliente envía solo un comando al servidor. El servidor atiende a los clientes concurrentemente,
ejecutando cada comando del cliente, y pasando los resultados de regreso a través del socket del cliente.
Algunos puntos a considerar:
✔ Mantenga las cosas lo más simples posible, el servidor debe de obtener el comando del cliente
haciendo un solo read() de un buffer suficientemente grande, asumiendo que sea suficiente para
almacenar el comando que el cliente pueda enviar.
✔ Recuerde la ejecución de un comando por el shell desde un programa:
execl(“/usr/bin/bash”,”bash”,”-c”,cmd, (char *) NULL)
✔ Para conseguir que el comando envíe su salida estándar al socket, use dup2().
✔ Compruebe en cada llamadas al sistema si devuelve errores, esto le evitará muchos dolores de
cabeza.
✔ La ejecución del servidor no deberá dejar procesos zombies.
✔ El cliente debe leer de la entrada estándar empleando la llamada al sistema read().
Para verificar si su cliente-servidor trabajan correctamente. Lleve a cabo los siguientes pruebas en una
terminal:
Laboratorio 2 2024-1
INF239 - Sistemas Operativos 2
No olvide de eliminar el servidor al final.
2) (6 puntos) Se le ha proporcionado un archivo con nombre webserver.c y el archivo index.html.
Después de compilarlo y ejecutarlo en background, se desea comprobar su funcionamiento. Desde un
browser (Firefox o cualquier otro) se solicita al webserver la página y se obtiene el siguiente resultado:
Laboratorio 2 2024-1
INF239 - Sistemas Operativos 3
Modifique el programa webserver.c (usted debe de usar este archivo como base) para que muestre la
página de la siguiente forma:
Lima, 18 de abril de 2024.
Prof: Alejandro T. Bello Ruiz.
Laboratorio 2 2024-1