diff options
[SP/P13] Solved first two exercises
1 files changed, 36 insertions, 0 deletions
| -rw-r--r-- | Year 3/System programming/Practice13/ex2.c | 36 |
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; +} |
