Logo_GRSST











































































LABORATORIO DE TELEMATICA

Práctica 3

Duración: 7 horas
Puntuación: 2.5 pto.

Objetivos:

Crear un caso práctico de comunicación entre varios procesos. Estudiar los diferentes problemas que puede presentar la comunicación entre procesos concurrentes.

Enunciado:

Cree un programa que sea capaz de permanecer ejecutándose permanentemente aunque el propietario se desconecte. Este proceso debe esperar datos por una cola de mensajes para a continuación añadir el contenido del mensaje a un fichero. Su nombre será p3d.
Cree otro programa que responda a la siguiente especificación:

NOMBRE

saverr - Permite ejecutar comandos de forma que su salida de error se dirija al demonio p3d.

SYNOPSIS

saverr [-n] [file [opciones] ]

DESCRIPTION

Saverr es una utilidad que ejecuta el programa especificado en sus opciones de forma que los avisos que éste dirija a la salida estándar de error (stderr) son enviados mediante mensajes al demonio p3d para ser almacenados en un fichero global de errores. De esta forma los mensajes de error de diferentes programas que se ejecuten simultáneamente pueden ser recogidos en el fichero de p3d secuencialmente.
El programa ejecutado no pierde la interactividad con su terminal, es decir, puede emplear su entrada estándar con normalidad.

OPCIONES

-n

Elimina la salida de error del programa, de forma que ésta no aparece en el terminal pero sí se envía al demonio p3d. Debe ir antes del fichero ejecutable para que no se confunda con las posibles opciones de éste.

El fichero de errores de p3d, llamado p3d.errors sigue la siguiente estructura:

Fecha Programa : Mensaje_de_error
Fecha Programa : Mensaje_de_error
Fecha Programa : Mensaje_de_error
................
Donde:
Fecha:
Día_semana Mes Día hora:min:segs Año

ej: Thu Feb 19 13:34:38 MET 1998

Programa:
Nombre del ejecutable que dió ese error.

Mensaje_de_error:
Texto que el proceso envió a la salida de error.

(FIN)

Cree algún programa interactivo que saque mensajes de error para probar saverr y p3d.

Cuestiones:

  • Supongamos que se intenta leer el contenido de p3d.errors justo cuando p3d intenta actualizarlo. Podría haber algún problema? De ser así, cómo podría resolverse?.

Otras funciones de utilidad:

pipe(2), gettimeofday(2), time(2), ctime(3)

Presentación:

En el directorio practica3 en su home deben existir uno o varios ficheros .c y .h así como un makefile que compile tanto el demonio p3d como saverr. Para la corrección de la práctica se borrarán todos los ejecutables, se hará un touch a todos los ficheros fuente y se recompilará mediante el makefile, así que no servirá de nada dejar en el directorio ejecutables o ficheros objeto.

daniel.morato@unavarra.es