C/Visual C - Shmget devuelve 0

 
Vista:

Shmget devuelve 0

Publicado por 2dEggs (1 intervención) el 11/11/2007 12:16:33
Mi problema es que al llamar a shmget id toma valor 0. ¿A que puede ser debido? Mi código es el siguiente:

int shared_c(key_t clave, int tam)
void *p;
int id;

if (id=shmget(clave, tam , 0666|IPC_CREAT|IPC_EXCL)==-1)
printf("la zona de memoria con clave %d, ya existe",clave);

....

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Shmget devuelve 0

Publicado por Nelek (816 intervenciones) el 12/11/2007 09:03:38
En primer lugar... te refieres a esto?

int shared_c(key_t clave, int tam)
{
void *p;
int id;

if (id=shmget(clave, tam , 0666|IPC_CREAT|IPC_EXCL)==-1)
printf("la zona de memoria con clave %d, ya existe",clave);
}

no es lo mismo que has puesto tu y, las cosas, cambian bastante.

Has incluido
#include <sys/ipc.h>
#include <sys/shm.h>
????

A que te refieres con el 0666 ?

Según veo:
mode_flags (lowest 9 bits)

y con 0666 ( = 0010 1001 1010)
estas énmascarando 10 bits, no 9, puede que de ahi te venga el fallo.

si querias poner 0x666 (= 0110 0110 0110) Tambien te pasas (esta vez serian 11, no 10 ni 9).

Linux no es mi fuerte, el profi en esos aspectos es Tom. Espera su respuesta, pero de todas maneras comprueba eso que te he dicho (lo he sacado de mirar la documentacion)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Shmget devuelve 0

Publicado por Tom (619 intervenciones) el 12/11/2007 18:03:28
Seguramente "clave" es 0.
De todos modos, 0 es un identificador válido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Shmget devuelve 0

Publicado por Nelek (816 intervenciones) el 14/11/2007 08:33:31
Que hay de lo que le dije yo? Dije barbaridades? O son aspectos "medio acertados"?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Shmget devuelve 0

Publicado por Tom (619 intervenciones) el 14/11/2007 11:57:20
Pues no sé. Lo de los permisos (0666) no creo que afecte al identificador del segmento ...

En estos casos, el problema casi siempre está en la clave. Si le pasas clave 0 te da un segmento 0.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar