# msg_queue This is the Cuttlefish message queue wrapper library, as one of the IPC options available. Below are the example usages running in two separate processes. ``` #define MAX_MSG_SIZE 200 #define NUM_MESSAGES 100 typedef struct msg_buffer { long mesg_type; char mesg_text[MAX_MSG_SIZE]; } msg_buffer; int example_send() { // create message queue with the key 'a' int queue_id = msg_queue_create('a'); struct msg_buffer msg; for (int i=1; i <= NUM_MESSAGES; i++) { // create message types 1-3 msg.mesg_type = (i % 3) + 1; sprintf(msg.mesg_text, "test %d", i); int rc = msg_queue_send(queue_id, &msg, strlen(msg.mesg_text)+1, false); if (rc == -1) { perror("main: msgsnd"); exit(1); } } printf("generated %d messages, exiting.\n", NUM_MESSAGES); return 0; } ``` ``` #define MAX_MSG_SIZE 200 typedef struct msg_buffer { long mesg_type; char mesg_text[MAX_MSG_SIZE]; } msg_buffer; int example_receive() { // create message queue with the key 'a' int queue_id = msg_queue_create('a'); struct msg_buffer msg; while (1) { int rc = msg_queue_receive(queue_id, &msg, MAX_MSG_SIZE, 1, false); if (rc == -1) { perror("main: msgrcv"); exit(1); } printf("Reader '%d' read message: '%s'\n", 1, msg.mesg_text); } return 0; } ```