Hello all,
I am facing an issue using the POSIX queue libraries (mqueue.h).
My goal is to make the different capp to exchange data with the rtiplc (basically for errors managment).
I have made a simple test today. On one hand, I created a queue in a capp (using mq_open) and send some data in it (mq_send). On the other hand, I openned this very same queue (through the same name) in the rtiplc.c and tried to read the sent messages (mq_receive).
It appeared that the sending process (the capp) filled up the message queue until the mq_maxmsg is reached. Indeed, I observed that the receiving process (the rtiplc) did not receive anything.
In fact, I observed that the two opened queues are DIFFERENT. I made a second test opening two queues with different names in the capp and the rtiplc. The one opened through the rtiplc is seable in the /dev/mqueue Linux file system. The other one is not visible in this interface.
I suppose that there is a wrapper around the POSIX mq_open call in the capp but not in the rtiplc. Is it expected ?!
For information, I have just tried with the SYSTEM V IPC queue library (msgget) and the data exchange is perfectly working. However, I'm wondering if this is the right solution, as I might expect a lot of switches between the primary and secondary modes...
Thank you in advance for replying !