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 !!!!
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


0