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>