C/Visual C - Variable entre dos procesos

 
Vista:

Variable entre dos procesos

Publicado por Juan (6 intervenciones) el 29/11/2019 14:29:17
Hola a tod@s.

Estoy empezando con C y he visto que se puede tener un fichero .h para poder compartir entre dos procesos las variables, pero lo que cambio en un proceso luego no lo veo en el otro, parece que no se actualizan esas variables.

Alguien me puede decir como poder compartir variables y sus valores entre dos procesos?.

He hecho un programita muy tonto para probar.

CAECERA.H
1
int variable;

PRUEBA1.C
1
2
3
4
5
6
7
8
#include "cabecera.h"
[
main() {
  variable = 8585;
  while(1) {
 
  }
}

PRUEBA2.C
1
2
3
4
5
6
7
#include <stdio.h>
#include <string.h>
#include "cabecera.h"
 
main() {
  printf("VARIABLE: %d", variable);
}

Primero ejecuto prueba1 de la siguiente forma:
./prueba1 &

Después ejecuto prueba2 y veo que el valor de la variable sigue siendo cero, no se actualiza.

No sé si lo estoy haciendo bien o no se hace así.
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

Variable entre dos procesos

Publicado por Nacho (68 intervenciones) el 29/11/2019 20:04:47
Efectivamente, no se hace así.

En un fichero .h lo que se hace es definir cosas que luego vas a usar al compilar. Si defines una variable como la tuya sin más se reservará memoria dentro del espacio de direcciones de ese proceso, y será iniaccesible para otro.

Si quieres que sea compartida tienes que reservar memoria dentro del espacio de direcciones que un sistema operativo usa como memoria compartida. Usar esta memoria directamente es uno de los muchos medios que hay para compartir entre procesos. Ahí tienes un ejemplo para linux.

https://www.somosbinarios.es/programacion-paralela-en-c-memoria-compartida/
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

Variable entre dos procesos

Publicado por Juan (6 intervenciones) el 02/12/2019 15:43:23
Muchas gracias.
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