Se me solicitó hacer un archivo compartido en donde diferentes programas se encarguen de abrirlo, escribirlo y cerrarlo. Al no conocer mucho al respecto, pensé que podía hacerlo por medio de memoria compartida, sin embargo, no funcionó. Inicialmente pensé en el programa de inicio (inicio.c
), que tiene el código:
FILE *forSize = fopen("text.txt","w");shmidDoc = shmget(keyDoc, sizeof(forSize), IPC_CREAT | 0666);FILE *files = (FILE *)shmat(shmidDoc, 0, 0); files = fopen("text.txt","w");
Después, se encuentra el programa escritura.c
en donde se escribe:
FILE *forSize = fopen("text.txt","w");shmidDoc = shmget(keyDoc, sizeof(forSize), IPC_CREAT | 0666);openFile = (FILE *)shmat(shmidDoc, 0, 0);
También pensé en añadirle extend File *archivo
en escritura.c
, sin embargo, los programas no corren al mismo tiempo, por lo que no funciona. Según entiendo, se pueden pasar punteros de archivos, sin embargo, se pueden perder.