C/Visual C - Apuntadores y FIFOS

   
Vista:

Apuntadores y FIFOS

Publicado por Varg V (1 intervención) el 09/05/2008 18:34:59
Supongamos que tengo esta estructura, en el main asigno un valor a BYTE y obtengo la direccion de memoria de cCI.BYTE asignando esta a x, ahora mi problema es el siguiente: Necesito acceder al valor de cCI.BYTE meidante otro programa utilizando memoria compartida, para esto a mi se me ocurre hacer lo siguiente, convertir a char la direccion de memoria y escribirla a un fifo con la instruccion write para poder leerla desde otro programa

struct CI{
char *BYTE;
};
int main(void){
static struct CI cCI;
char buffer[10];
cCI.BYTE = "shaitan";
unsigned int x = (unsigned int)&cCI.BYTE;
strcpy(buffer,itoa(x,16));
write(fp,buffer,strlen(buffer));
}

en mi otro programa tengo esto, buffer recibe la cadena que contiene la direccion hexadecimal que mande en el otro programa sin ningun problema, incluso convierto el char a unsigned int, con esto estoy conociendo la direccion de memoria de la variable del otro programa (cCI.BYTE), mi pregunta ahora es la siguiente:

Si ya conozco la direccion de memoria de la varible del primer programa (cCI.BYTE) y esta la tengo almacenada en dir, como le hago para acceder a su valor ("shaitan") es decir que yo pueda manipularlo, como por ejemplo guardarlo en un char cadenadelotroprograma[10]; y lo pueda mandar imprimir o hacer algo con el.

int nbytes=read(fpx,buffer,10);
buffer[nbytes]='';
unsigned int dir = (unsigned int)atoi(buffer);

Sugerencias ??? o algun metodo para mandar directamente la direccion de memoria sin mandarla en una cadena, la mando de esta forma por que la instruccion write solo permite mandar cadenas, pero si no vuelvo a lo mismo, como accedo al valor de una variable conociendo su direccion de memoria.

SALUDOS !!!!
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:Apuntadores y FIFOS

Publicado por Tom (475 intervenciones) el 12/05/2008 10:10:06
No sé en güindous, pero en unix (y linux) no puedes.
Lo que debes poner en memoria compartida son las propias variables que quieras poder modificar por más de un programa.
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