From c3f429feadf33a12938732e1ad7b48de5c2f2683 Mon Sep 17 00:00:00 2001 From: Jacob Garby Date: Fri, 3 May 2024 16:37:02 +0200 Subject: [PATCH] added some c code --- rewrite/client.c | 21 +++++++++++++++++++++ rewrite/manager.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 rewrite/client.c create mode 100644 rewrite/manager.c diff --git a/rewrite/client.c b/rewrite/client.c new file mode 100644 index 0000000..a93df1d --- /dev/null +++ b/rewrite/client.c @@ -0,0 +1,21 @@ +#include +#include +#include +#include +#include +#include + +void cont_handler(int sig) { + if (sig != SIGCONT) return; +} + +int main() { + mqd_t q = mq_open("/res_request", O_WRONLY); + + if (q == (mqd_t) -1) { + fprintf(stderr, "Error making queue: %s\n", strerror(errno)); + } + + const char *str = "Hello, world! This is my message."; + mq_send(q, str, strlen(str), 0); +} diff --git a/rewrite/manager.c b/rewrite/manager.c new file mode 100644 index 0000000..f8ad1bc --- /dev/null +++ b/rewrite/manager.c @@ -0,0 +1,46 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define BUFSZ 256 + +void cleanup(int sig) { + mq_unlink("/res_request"); + + exit(sig < 0 ? EXIT_FAILURE : EXIT_SUCCESS); +} + +int main() { + struct mq_attr attr; + mqd_t q; + + char buff[BUFSZ + 1]; + ssize_t nread; + + attr.mq_maxmsg = 10; + attr.mq_msgsize = BUFSZ; + + mq_unlink("/res_request"); + q = mq_open("/res_request", O_RDONLY | O_CREAT | O_EXCL, 0644, &attr); + + if (q == (mqd_t) -1) { + fprintf(stderr, "Error making queue (%d): %s\n", errno, strerror(errno)); + cleanup(-1); + } + + signal(SIGINT, cleanup); + printf("Waiting.\n"); + + while ((nread = mq_receive(q, buff, BUFSZ, NULL)) != -1) { + printf("Got %zd bytes: %s\n", nread, buff); + sleep(3); + } + + fprintf(stderr, "Error receiving: %s\n", strerror(errno)); + exit(EXIT_FAILURE); +}