-
Notifications
You must be signed in to change notification settings - Fork 0
Home
El propósito de este proyecto es crear un pequeño programa de intercambio de datos utilizando señales UNIX.
- Los ejecutables deben llamarse
clientyserver. - Deberás proporcionar un archivo
Makefile, que compilará los archivos fuente de tu programa.
No deberá hacer relink. - Puedes usar tu
libft. - Debes gestionar los errores con cuidado.
Bajo ninguna circunstancia tu programa puede terminar inesperadamente (segfault, bus error, double free, etc). - Tu programa no puede tener leaks de memoria.
- Puedes utilizar una variable global por programa
(una para elclientey otra para elservidor), pero tendrás que justificar su uso.
-
Debes crear un programa de comunicación en la forma de un
clientey unservidor. -
El
servidordebe lanzarse primero, tras lanzarse debe mostrar suPID. -
El
clientetomará como parámetros:- El
PIDdel servidor. - La string que debería mandarse.
- El
-
El cliente debe comunicar la string pasada como parámetro al servidor.
Una vez la string se haya recibido, el servidor debe mostrarla. -
El servidor debe ser capaz de mostrar la string suficientemente rápido.
Por rápido queremos decir que si piensas que es está tardando mucho, probablemente es que está tardando demasiado.
1 segundo para mostrar 100 caracteres es ¡muchíiiiisimo!
- Tu servidor debe poder recibir strings de distintos clientes consecutivamente, sin necesidad de reiniciar.
- La comunicación entre tu cliente y tu servidor debe hacerse SOLO utilizando señales UNIX.
- Solo puedes utilizar estas dos señales:
SIGUSR1ySIGUSR2.
Linux no pone en cola señales cuando ya tienes señales pendientes de este tipo. ¿Hora de hacer bonus?
- El servidor confirma cada señal recibida mandando una señal al cliente.
- Soporta los caracteres Unicode.
- Se permite usar la
libft -
write~ Escribe en un file descriptor - ft_printf y cualquier equivalente que TÚ hayas programado
-
malloc~ Reserva memoria -
free~ Libera memoria reservada -
exit~ Termina el programa.
====
-
pause~ Suspende el programa hasta que reciba una señal -
sleep~ "Duerme" durante un especifico numero de segundos -
usleep~ Suspende temporalmente durante un especifico numero de microsegundos
====
| Nombre de la función | Funcion |
|---|---|
| getpid | Recupera el PID ID del proceso en ejecución |
| signal | ANSI C Manejador de señales |
| sigemptyset | Inicializar un signal set vacío
|
| sigaddset | Añade una señal a un signal set
|
| sigaction | Capta señales, capta el PID del comunicador, y bloquea otras señales |
| kill | Envía una `señal` a un PID concreto |