IIC2333 / foro-2019-1

Foro oficial del curso IIC2333 - Sistemas Operativos y Redes, semestre 2019-1.
2 stars 0 forks source link

Memoria compartida #66

Closed Nicolasvegam closed 5 years ago

Nicolasvegam commented 5 years ago

Hola! Tengo un par de problemas con el uso de memoria compartida entre proceso, no logro que deje de sobre escribir sobre la misma variable, en mi array de palabras siempre queda la última en mandarse. En mi código tengo algo así

El proceso que recibirá ejecuta esto antes

for(int i=0;i < index;i++)
  {
    keys[i] = ftok("output.txt", i);
    shmid[i] = shmget(keys[i], SIZE, IPC_CREAT | SHM_W | SHM_R);
    strcpy(MapResults[i], (char*)shmat(shmid[i], NULL, 0));
}

y los procesos que envían,

    key_t key = ftok("output.txt", i); //cada i es distinto para c/proceso
    long shmid = shmget(key, SIZE, IPC_CREAT | SHM_W | SHM_R);
    strcpy((char*)shmat(shmid, NULL, 0), string);
IchottMano commented 5 years ago

Hola!

La función strcpy escribe el string deseado en la dirección de memoria que le indicas, empezando desde la primera dirección de memoria.

Si no quieres sobreescribir la palabra anterior, debes decirle explícitamente a la función que escriba la siguiente palabra después de la primera.

Espero esto haya resolvido tu duda.

Saludos!