Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Shared Memory en POSIX

Estas en el tema de Shared Memory en POSIX en el foro de C/C++ en Foros del Web. Hola a todos, tengo que hacer un programita para la facu pero no entiendo la lógica, a ver si por favor me pueden dar una ...
  #1 (permalink)  
Antiguo 25/10/2008, 09:35
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 16 años, 3 meses
Puntos: 0
Shared Memory en POSIX

Hola a todos, tengo que hacer un programita para la facu pero no entiendo la lógica, a ver si por favor me pueden dar una manito, el tema es el siguiente:
Tengo que hacer un programa en C de linux que le paso un archivo que tiene un texto y el programita me tiene que decir cuantas vocales hay nada más que eso, pero el problema es que lo tengo que hacer con memoria compartida y no lo entiendo mucho la funcionalidad, para empezar estuve probando con algo simple para ver como es.

Código:
 13
 14 int main (int argc, char *const argv[])
 15 {
 16
 17         int nread,j,ret,fd,fdm,fdh;//variables varias
 18         char * arch=NULL,* ord=NULL,*pr,*ptrh;
 20         int *ptr,*ptrp;
 21         char buf[256],bufa,;
 22         
 23         //MANEJO DE ARGUMENTOS
 24         while((ret=getopt(argc, argv, "f: o:"))>0)
 25         {
 26                 switch(ret)
 27                 {
 28                         case'f':
 29                                 arch=optarg;
 30                                 break;
 31                         case'o':
 32                                 ord=optarg;
 33                                 break;
 34                 }a
 35         }
 36                         if (!arch)
 37                                  {
 38                                  perror( "ERROR: Ingrese una archivo valido\n");
 39                                  exit(1);
 40                                  }
 41         
              sem_t *semaforo;
 44         semaforo=sem_open("semaforo",O_CREAT|O_RDWR,0600,0);
 45
 46         fd=open(arch,O_RDONLY,0777);
 47         fdm=open("memoria",O_CREAT|O_RDWR,0660);
 48
 49         ptrp=mmap(NULL,20,PROT_READ|PROT_WRITE,MAP_SHARED,fdm,0);
 50
 51
 52
 53
 54         while((nread=read(fd,&bufa,20))>0)
 56                 {
 57
 58                 *(ptrp) = bufa;
 59                 printf("%s\n",bufa);
 60                 }
 61                 //sem_wait(semaforo);
 62 //sem_unlink("/semaforo");
 63
 64 return 0;
 65 }
Yo lo que quiero entender es la lógica que tiene Memoria Compatida para eso hice este programita que en base a un archivo que le pasamos como argumento, un ej de ejecución puede ser ./tp -f "prueba.txt", entonces lo que quiero hacer es pasar el contenido de ese archivo para que se pueda ver en la memoria compartida y no se como hacerlo. Agradezco muchisimo si alguien me puede ayudar saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:32.