creo un mensaje y lo meto en una cola de mensajes<div><br></div><div>por aca estan los define y la cola de buzones</div><div><br></div><div><div>#define CREAR 1</div><div>#define BORRAR 2</div><div>#define AGREGAR_LINEA 3</div>
<div>#define TERMINAR 4</div></div><div><br></div><div>etc,etc</div><div><br></div><div><br></div><div><br></div><div><br></div><div><div>while((op=menu()) != 0)</div><div> {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>switch(op)</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>case 0:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> puts("Esto no va a salir nunca");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> break;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>case 1:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> datos.tipo = CREAR;</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> printf("Introduce el nombre para el fichero\n");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> scanf("%s", datos.fichero);</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> break;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>case 2:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> datos.tipo = BORRAR;</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> printf("Introduce el nombre del fichero que desea borrar\n");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> scanf("%s", datos.fichero);</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> break;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>case 3:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> datos.tipo = AGREGAR_LINEA;</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> printf("Introduce el nombre del fichero que desea modificar\n");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> scanf("%s", datos.fichero);</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> break;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>default:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> puts("Opcion incorrecta");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div> }</div></div><div><br></div><div><br></div><div><br></div><div>Ahora quiero leer de la cola de buzones un mensaje</div><div>entoces he hecho lo sgte</div>
<div><br></div><div>por aca estan los define y la cola</div><div><br></div><div><div><div>#define CREAR 1</div><div>#define BORRAR 2</div><div>#define AGREGAR_LINEA 3</div><div>#define TERMINAR 4</div></div><div><br></div>
<div><div>typedef struct{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>long tipo;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>char fichero[20];</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>char newLinea[80];</div>
<div>}mensaje;</div><div><br></div><div>int menu();</div><div><br></div><div>main()</div><div>{</div><div> </div><div> key_t clave;</div><div> int id_buzonmsj, op;</div><div> mensaje datos;</div><div> memset(&datos, 0, sizeof(datos));</div>
<div> </div><div> clave=ftok("/bin/ls",'r');</div><div><br></div><div> if(clave == -1)</div><div> {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>perror("No clave");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>exit(EXIT_FAILURE);</div><div> }</div><div> </div><div> id_buzonmsj = msgget(clave, IPC_CREAT|0644);</div><div><br></div><div> if(id_buzonmsj == -1)</div>
<div> {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>perror("No cola");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>exit(EXIT_FAILURE);</div><div> }</div>
</div></div><div><br></div><div><div>if(msgrcv(id_buzonmsj, &datos, sizeof(datos), 0, IPC_NOWAIT) != -1)</div><div> {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>while((op=menu()) != 0)</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> switch(op)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> {</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> case 0:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>puts("Esto no va a salir nunca");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>break;</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> case 1:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>datos.tipo = CREAR;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>system("touch datos.fichero");</div>
<div> <span style="background-color:rgb(255,255,255)"><font color="#ff0000">/* ¿PREGUNTA? Como meter la variable datos.fichero que contiene el nombre del fichero recuperado del mensaje dentro de la funcion </font></span></div>
<div><span style="background-color:rgb(255,255,255)"><font color="#ff0000"> system */ </font></span></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>break;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> case 2:</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>datos.tipo = BORRAR;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>system("remove datos.fichero");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>break;</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> /*case 3:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>agregar_linea_fichero("clientes.txt","");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>break;*/</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> default:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>puts("Opcion incorrecta");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> }</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div> }</div><div>}</div></div><div><br></div>