Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/shm.h>
- #include <sys/ipc.h>
- #include <string.h>
- #define MEM_SIZE 1024
- #define PASS_UNICO 55
- int main()
- {
- int memoriaID;
- char *shmPointer;
- puts("----- Este proceso escribe -----\n");
- key_t clave_unica_mem = ftok("/bin/ls", PASS_UNICO);
- /*
- ftok() Genera una "clave unica".
- Le pasamos como parametros: (const char *path , int id)
- --> *path: Cualquier archivo, yo le paso el ejecutable ls porque siempre está en el sistema.
- --> id: PASS_UNICO, un integer que esta definido arriba, es un numero al azar que debe coincidir en ambos programas que accedan a la shared memory.
- */
- if((memoriaID = shmget(clave_unica_mem, MEM_SIZE, 0666 | IPC_CREAT)) == -1)
- {
- fprintf(stderr,"Error al reservar la memoria.");
- exit(EXIT_FAILURE);
- }
- /*
- shmget() crea la zona de memoria compartida y devuelve un INTEGER.
- Le pasamos como parametros: (key_t key, int size, int shmflag)
- key: La variable 'clave_unica_mem' que contiene lo que devolvió ftok().
- size: MEM_SIZE, es el tamaño que vamos a reservar, en bytes, de la memoria compartida.
- shmflag: Permisos sobre la shared memory junto a IPC_CREAT que indica que se tiene que crear la memoria en caso de que no exista.
- */
- shmPointer = shmat(memoriaID,(void *)0,0); // Devuelve un puntero a la direccion de memoria compartida
- fprintf(stdout, "Obtuvimos la memoria compartida ID: %d", memoriaID);
- strcpy(shmPointer, "Texto de prueba"); // Asignamos el string al puntero que hace referencia a la memoria compartida
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement