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:
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. 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 }