Skip to content
Sadoming edited this page Feb 19, 2024 · 8 revisions

El propósito de este proyecto es crear un pequeño programa de intercambio de datos utilizando señales UNIX.

Parte Obligatoria

  • Debes crear un programa de comunicación en la forma de un cliente y un servidor.

  • El servidor debe lanzarse primero, tras lanzarse debe mostrar su PID.

  • El cliente tomará como parámetros:

    • El PID del servidor.
    • La string que debería mandarse.
  • 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 y SIGUSR2.

Linux no pone en cola señales cuando ya tienes señales pendientes de este tipo. ¿Hora de hacer bonus?

Bonus

  • El servidor confirma cada señal recibida mandando una señal al cliente.
  • Soporta los caracteres Unicode.

Funciones permitidas

  • 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

====

  • getpid ~ Recupera el PID ID del proceso en ejecucion
  • signal ~ Capta señales
  • sigemptyset ~ Initialize and empty a signal set
  • sigaddset ~ add a signal to a signal set
  • sigaction ~ Capta señales, capta el PID del comunicador, y bloquea otras señales
  • kill ~ Envia una señal a un PID concreto

Clone this wiki locally