#include #include #include #include #include #include #include #include #define MSGQ_KEY 0x1234 #define PERM 0660 struct mymsg { long mtype; char mtext[1]; }; int main() { int msg_id; /* message Queue id. */ struct mymsg msg; /* message to send. */ int nmsg; /* number of msg send. */ int status; /* status returned by msgsnd(). */ /* * Create Message Queue */ if ( (msg_id = msgget (MSGQ_KEY, PERM | IPC_CREAT)) == -1 ) { perror ("msgget: "); exit (EXIT_FAILURE); } /* * now write message one by one until Queue is full */ msg.mtype = 1; msg.mtext[0] = 'A'; nmsg = 0; do { printf ("Receiving #%d\n", nmsg); status = msgrcv (msg_id, &msg, sizeof(msg.mtext), 0, 0); printf ("Received msg #%d\n", nmsg); nmsg++; } while ( tolower(getchar()) != 'q' ); exit (EXIT_SUCCESS); }