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.
per adesso il mio codice li memorizza in ordine di arrivo.codice:#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); } }

					
					
					
						
  Rispondi quotando