Summary Files Commits Branches @commit @diff @stats
path: root / Year 3 / System programming / Practice13 / ex2.c
diff options
context:
space:
mode:
Commit0e7e0faf753e10175b1ea6406299d9f0cca81962 (patch)
Author
 Syndamia <kamen@syndamia.com>
2024-01-21 14:58:12 +0200
Committer
 Syndamia <kamen@syndamia.com>
2024-01-21 14:58:12 +0200
Files4213b569be27e4795037a64837215ef238c80422 /Year 3/System programming/Practice13/ex2.c
uni-projects-0e7e0faf753e10175b1ea6406299d9f0cca81962.tar
uni-projects-0e7e0faf753e10175b1ea6406299d9f0cca81962.tar.gz
uni-projects-0e7e0faf753e10175b1ea6406299d9f0cca81962.zip
Parent2dc3695bf5e288779741f95629ba6ec9e1cbee8c (diff)
[SP/P13] Solved first two exercises
1 files changed, 36 insertions, 0 deletions
-rw-r--r--Year 3/System programming/Practice13/ex2.c36
diff --git a/Year 3/System programming/Practice13/ex2.c b/Year 3/System programming/Practice13/ex2.c
new file mode 100644
index 0000000..029fcfa
--- /dev/null
+++ b/Year 3/System programming/Practice13/ex2.c
@@ -0,0 +1,36 @@
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <mqueue.h>
+#include <signal.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int main() {
+ struct mq_attr mqattr = {
+ .mq_maxmsg = 1,
+ .mq_msgsize = 1,
+ };
+ mqd_t mq = mq_open("/mq", O_RDWR | O_CREAT, 0755, &mqattr);
+
+ int fpid = fork();
+ if (fpid == 0) {
+ char tmp[1];
+ while (1) {
+ mq_receive(mq, tmp, 1, NULL);
+ printf("child\n");
+ }
+ }
+ else {
+ while (1) {
+ printf("parent\n");
+ mq_send(mq, "", 1, 0);
+ sleep(1);
+ }
+ }
+
+ mq_close(mq);
+ if (fpid != 0)
+ mq_unlink("/mq");
+
+ return 0;
+}