PDA

Visualizza la versione completa : [C] scrivere su file secondo un ordine


livrea
13-03-2013, 13:25
ciao a tutti ho una struttura che ricevo tramite message queue e la devo salvare su file ma secondo un ordine e non in maniera fifo:
prima devo scrivere quelli con "tipo" 300 poi 200 e poi 100.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/msg.h>
#include <fcntl.h>
#define N 2
#include "struttura.h"

int main(int argc,char *argv[]){
int msg_id;
int i=0, j=0;
struct struttura struttura[N];
FILE *fp;
printf("Benvenuto nel receiver\n");

msg_id=msgget((key_t) 3000,0666| IPC_CREAT);
if(msg_id==-1){
perror("Non ho creato la coda dei messaggi\n");
exit(EXIT_FAILURE);
}

fp=fopen("lista.txt","w");
if(fp!=NULL){
printf("File Aperto\n");
while(1){
printf("In attesa di messaggio... \n");

msgrcv(msg_id,&struttura,sizeof(struttura),0,0);
printf("Ho ricevuto tipo: %ld\n", struttura[i].tipo);
fprintf(fp,"tipo: %ld\n",struttura[i].tipo);
printf("Ho ricevuto messaggio: %s\n",struttura[i].message);
fprintf(fp, "messaggio: %s\n", struttura[i].message);

i++;
if(i==N)
break;
}


msgctl(msg_id,IPC_RMID,0);
printf("Fine \n");

exit(EXIT_SUCCESS);
}else{
printf("errore file\n");
exit(EXIT_FAILURE);
}
}


per adesso il mio codice li memorizza in ordine di arrivo.

Loading