#ifndef IPC_C #define IPC_C #include #include #include struct mq_attr attr = { .mq_flags = 0, .mq_maxmsg = 10, .mq_msgsize = 1024, .mq_curmsgs = 0, }; char* read_queue(mqd_t target) { char* buf = malloc(attr.mq_msgsize); int n = mq_receive(target, buf, attr.mq_msgsize, NULL); if (n == -1) { perror("mq_receive"); free(buf); return NULL; } return buf; } void send_queue(mqd_t target, const char* msg, int n) { mq_send(target, msg, n, 0); } int get_num_messages(mqd_t target) { struct mq_attr target_attr; if (mq_getattr(target, &target_attr) == -1) { perror("mq_getattr"); exit(1); } return target_attr.mq_curmsgs; } #endif // IPC_C