-
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
client
yserver
. - 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 elcliente
y otra para elservidor
), pero tendrás que justificar su uso.
-
Debes crear un programa de comunicación en la forma de un
cliente
y unservidor
. -
El
servidor
debe lanzarse primero, tras lanzarse debe mostrar suPID
. -
El
cliente
tomará como parámetros:- El
PID
del 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:
SIGUSR1
ySIGUSR2
.
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 |