[C con Clase] colas de mensaje

Dagoberto Duran unodago en gmail.com
Mie Mar 28 01:28:38 CEST 2012


creo un mensaje y lo meto en una cola  de mensajes

por aca estan los define y la cola de buzones

#define CREAR 1
#define BORRAR 2
#define AGREGAR_LINEA 3
#define TERMINAR 4

etc,etc




while((op=menu()) != 0)
    {
switch(op)
{
case 0:
    puts("Esto no va a salir nunca");
    break;
case 1:
    datos.tipo = CREAR;
    printf("Introduce el nombre para el fichero\n");
    scanf("%s", datos.fichero);
    break;
case 2:
    datos.tipo = BORRAR;
    printf("Introduce el nombre del fichero que desea borrar\n");
    scanf("%s", datos.fichero);
    break;
case 3:
    datos.tipo = AGREGAR_LINEA;
    printf("Introduce el nombre del fichero que desea modificar\n");
    scanf("%s", datos.fichero);
    break;
default:
    puts("Opcion incorrecta");
}
    }



Ahora quiero leer de la cola de buzones un mensaje
entoces he hecho lo sgte

por aca estan los define y la cola

#define CREAR 1
#define BORRAR 2
#define AGREGAR_LINEA 3
#define TERMINAR 4

typedef struct{
long tipo;
char fichero[20];
char newLinea[80];
}mensaje;

int menu();

main()
{

    key_t clave;
    int id_buzonmsj, op;
    mensaje datos;
    memset(&datos, 0, sizeof(datos));

    clave=ftok("/bin/ls",'r');

    if(clave == -1)
    {
perror("No clave");
exit(EXIT_FAILURE);
    }

    id_buzonmsj = msgget(clave, IPC_CREAT|0644);

    if(id_buzonmsj == -1)
    {
perror("No cola");
exit(EXIT_FAILURE);
    }

if(msgrcv(id_buzonmsj, &datos, sizeof(datos), 0, IPC_NOWAIT) != -1)
    {
while((op=menu()) != 0)
{
    switch(op)
    {
    case 0:
puts("Esto no va a salir nunca");
break;
    case 1:
datos.tipo = CREAR;
system("touch datos.fichero");
                        /* ¿PREGUNTA? Como meter la variable datos.fichero
que contiene el nombre del                                     fichero
recuperado del mensaje dentro de la funcion
                            system  */
break;
    case 2:
datos.tipo = BORRAR;
system("remove datos.fichero");
break;
    /*case 3:
agregar_linea_fichero("clientes.txt","");
break;*/
    default:
puts("Opcion incorrecta");
    }
}
    }
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120328/f0d70382/attachment.html>


Más información sobre la lista de distribución Cconclase