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