I have a problem with my message queue system...
I used to use system V type mq system but then I figured out that posix mq system was existed and was indeed much more efficient..
So my question is this, while I was using System V type message queue I was receiving messages like that;
MessageBuffer* m_message = malloc(sizeof(MessageBuffer));
int RECEIVER = 2;
(...) unrelevant preperations
msgrcv(mq_id, m_message, sizeof(MessageBuffer) - sizeof(long), RECEIVER, 0);
in here RECEIVER is my process's mq code, no other processes but RECEIVER receives messages from queue which tagged with type = RECEIVER..
but at posix message queues no such message flags exists, for example at mq_receive:
mq_receive(mq_id, (char*)m_message, sizeof(MessageBuffer),0);
Sometimes even sender process receives messages more quickly than target process so messaging fails.
How can I distinguish those different processes from each other on a linux system? Any idea?