problemas con semaforos
Publicado por manuel (16 intervenciones) el 03/03/2005 07:43:08
ocurre algo "extrano".
en main(), en este orden, si creo dos colas de mensajes y luego un semaforo, el programa no funciona.
PERO, si invierto el orden, primero creo el semaforo y luego las dos colas, entonces si funciona como esperado(eso creo).
cual puede ser el motivo?
aqui el codigo:
...(otras funciones)
...
int crea_semaforo(int& semid, struct sembuf* semaforo)
{
key_t semkey;
semkey= ftok("seminit", 'a');
semid= semget(semkey, 1, IPC_CREAT | 0666);
semaforo[0].sem_num= 0;
semaforo[0].sem_flg= 0;
return 0;
}
int main()
{
int semid= 0;
struct sembuf semaforo[0];
crea_semaforo(semid, semaforo);
// ...aqui creo las colas
//
// ... pero si creara el semaforo AQUI, despues de haber creado las colas
// el programa o no funciona o se traba despues de entrar.
//
//... aqui entro a un loop para enviar mensajes a otro proceso
return 0;
}
en main(), en este orden, si creo dos colas de mensajes y luego un semaforo, el programa no funciona.
PERO, si invierto el orden, primero creo el semaforo y luego las dos colas, entonces si funciona como esperado(eso creo).
cual puede ser el motivo?
aqui el codigo:
...(otras funciones)
...
int crea_semaforo(int& semid, struct sembuf* semaforo)
{
key_t semkey;
semkey= ftok("seminit", 'a');
semid= semget(semkey, 1, IPC_CREAT | 0666);
semaforo[0].sem_num= 0;
semaforo[0].sem_flg= 0;
return 0;
}
int main()
{
int semid= 0;
struct sembuf semaforo[0];
crea_semaforo(semid, semaforo);
// ...aqui creo las colas
//
// ... pero si creara el semaforo AQUI, despues de haber creado las colas
// el programa o no funciona o se traba despues de entrar.
//
//... aqui entro a un loop para enviar mensajes a otro proceso
return 0;
}
Valora esta pregunta


0