Ciao, hai ragione scusa per non aver rispettato le regole.
Non riesco a capire come si fà questo esercizio, ho fatto solo il cameriere così:
#include<stdio.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#define MINT 1
#define MAXT 50
#define MINP 1
#define MAXP 30
#define MINB 1
#define MAXB 10
int main()
{ int Ncameriere;
int msgid;
struct msgbuf
{
long mtype; /* - tipo del messaggio; */ int cameriere;
int tavolo;
int pizza;
int bibita;
}
sndbuf;
printf("Inserire il numero del Cameriere\n"); scanf("%d",&Ncameriere);
key_t key; key=ftok("/bin/ls",'b'); msgid = msgget(key,0666); if (msgid == -1) { printf("errore creazione coda di messaggi\n"); return -1; } else printf("\nMi collego alla coda di messaggi\n");
do { //TAVOLO sndbuf.cameriere=Ncameriere; do { printf("\n>>>>>>>>>>CAMERIERE %d NUMERO TAVOLO (0=FINE):\n",Ncameriere); scanf("%d",&sndbuf.tavolo); }while((sndbuf.tavolo<0) || (sndbuf.tavolo>MAXT)); if (sndbuf.tavolo>0) { sndbuf.mtype=sndbuf.tavolo+10; //COMPILO L'ORDINE do { do { printf("\n\nNUMERO BEVANDA:\n"); scanf("%d",&sndbuf.bibita); }while((sndbuf.bibita<MINB) || (sndbuf.bibita>MAXB)); do { printf("\n\nNUMERO PIZZA (0=FINE):\n"); scanf("%d",&sndbuf.pizza); }while((sndbuf.pizza<0) || (sndbuf.pizza>MAXP)); //INVIO L'ORDINE AL PIZZAIOLO msgsnd(msgid,&sndbuf,sizeof(sndbuf),0); }while(sndbuf.pizza!=0); } }while(sndbuf.tavolo!=0); msgctl(msgid,IPC_RMID,0);
return 0;
}
scusate per la formattazione.