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.