Is two way comm possible using a single message queue in C

c, ipc, linux, message-queue

Solution

Yes, it is possible to do this with sysV messages queues, which from looking at your previous questions, you are using. You can use the `msgtype` field embedded in the message format to specify what kind of message it is and the appropriate receiving process has to specify that msgtype in its `msgrcv` call and process messages of that type.

So, for example, server can write msgtype = 1 and client can ack msgtype 2.

Note that this requires you to really think out your messaging scheme - read the `msgrcv` docs carefully so you understand the options for how messages can be read - and why you are doing it. If you don't do it right it won't scale well - not in performance but in programming complexity - and it will be easy to get yourself in a situation where your programs are chasing their own tails.

Whether this is smarter than just using two queues I will leave for you to decide.

Note that you really can't do this with POSIX message queues.

Problem

I want server to send some message to client and client to ACK it. I have been given this assignment. Can I do it using a single message queue in C linux or I need to create two?? Thanks :)

Original source