Sincronizar tres procesos Linux
//**************************************************************
// Semaforos.h//**************************************************************
#include
#include
#include
#include
#define PERMISOS 0666 //Permisos de lectura y escritura
// Máximo número de semáforos
const short MAXSEMAFOROS = 100;
// Número deerror con que concluye la salida en caso del mismo
const int ERROR_TIPOSEM = -1;
const int ERROR_NOMBRENOVALIDO = -2;
const int ERROR_MAXSEM = -3;
const int ERROR_SEMAFOROSNODISPONIBLES = -4;
constint ERROR_SEMAFORONOENCONTRADO = -5;
const int ERROR_VALORSEMAFOROBINARIO = -6;
const int ERROR_VALORSEMAFOROGENERAL = -7;
const int ERROR_CREASEMAFOROS = -8;
int tam_conjunto = 0; // Estavariable recoge el tamaño del conjunto de semáforos, que deberá ser inferior a 100
int ultimosemaforo = -1; // Esta variable recoge el valor del último semáforo asignado
int semid; //Identificador del conjunto de semáforos
long clave = 898989;
// Estructura de un semáforo nuestro
struct tiposemaforo
{
char *nombre;
char tipo;
} semaforo[100];
struct sembufinfosemaforo[1]; // Estructura de información del semáforo de sembuf, definida en sem.h
/*
Funcion asociar_sem
Esta función la primera vez que se invoca en el código de
un programa crea un conjunto desemáforos de arg3 elementos y comprueba que se ha creado
con éxito. Una vez creado el conjunto mediante el uso de una estructura de datos global asocia
al primer semáforo del conjunto el nombreespecificado en arg1 y el tipo especificado en arg2.
Tanto el nombre como el tipo son cadenas de caracteres. El tipo solo puede tomar dos valores:
'B' (binario) o 'G' (general).
Cuando esta función sevuelve a invocar, puesto que el conjunto de semáforos ya está creado,
lo único que hace es asociar a otro semáforo del conjunto el nombre y el tipo especificados
como argumentos de entrada. Antes...
Regístrate para leer el documento completo.