diff --git a/clients/cpu_temp/src/cpu_temp.c b/clients/cpu_temp/src/cpu_temp.c
index 20ed07af7f9582e19d5525f7920cac098f9979d9..a93500245045b349e4be2ea363d673618a68778f 100644
--- a/clients/cpu_temp/src/cpu_temp.c
+++ b/clients/cpu_temp/src/cpu_temp.c
@@ -1,5 +1,6 @@
 #include "../../../common/include/measurement.h"
 #include "../../../common/include/userspace_comm.h"
+#include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -44,7 +45,13 @@ int main(int argc, char *argv[]) {
         .id = atoi(argv[1]),
     };
 
-    send_userspace_message(&userspace_send_handle, measurement);
+    if (send_userspace_message(&userspace_send_handle, measurement) == -1) {
+      if (errno == EIDRM || errno == EINVAL) {
+        printf("Message queue got closed\n");
+        break;
+      }
+      perror("Failed to send message");
+    }
 
     usleep(sleep_ms * 1000);
   }
diff --git a/clients/dummy/src/dummy.c b/clients/dummy/src/dummy.c
index e273cca6781b4b3ecd3cc6862be913bddb59b911..01581cb88327f4821b621a03a62b3c4c23214ff7 100644
--- a/clients/dummy/src/dummy.c
+++ b/clients/dummy/src/dummy.c
@@ -1,5 +1,6 @@
 #include "../../../common/include/measurement.h"
 #include "../../../common/include/userspace_comm.h"
+#include <errno.h>
 #include <fcntl.h>
 #include <math.h>
 #include <stdio.h>
@@ -31,7 +32,13 @@ int main(int argc, char *argv[]) {
         .id = atoi(argv[1]),
     };
 
-    send_userspace_message(&userspace_send_handle, measurement);
+    if (send_userspace_message(&userspace_send_handle, measurement) == -1) {
+      if (errno == EIDRM || errno == EINVAL) {
+        printf("Message queue got closed\n");
+        break;
+      }
+      perror("Failed to send message");
+    }
 
     step += 0.01;
     if (step >= 2.0 * M_PI) {
diff --git a/common/src/userspace_comm.c b/common/src/userspace_comm.c
index 3468a505835f2a986587db4eb34ead7ad6d1b86f..7acbc39fe1e2cd07bc4b3f26f83d52ad93a74d71 100644
--- a/common/src/userspace_comm.c
+++ b/common/src/userspace_comm.c
@@ -27,8 +27,11 @@ int send_userspace_message(userspace_send_handle_t *handle,
       .measurement = measurement,
   };
 
-  msgsnd(handle->msg_queue_id, &message_queue_message, sizeof(measurement_t),
+  int read = msgsnd(handle->msg_queue_id, &message_queue_message, sizeof(measurement_t),
          0);
+  if (read == -1) {
+      return -1;
+  }
   return 0;
 }