De acuerdo al estándar, el tipo int puede ocupar 2 bytes o 4 bytes, luego asumir que siempre va a ocupar 4 bytes puede ser perjudicial para tus intereses.
Por otro lado también te digo que dudo mucho que en un pc el compilador genere ints de 2 bytes.
Hasta donde llego viendo documentación por internet, la forma de crear la cola en el cliente (el que envia) debería ser algo tal que:
Código C:
Ver originalqueueDescriptor = mq_open(QUEUE_NAME, O_WRONLY);
Lo cual difiere ligeramente de tu código:
Código C:
Ver originalstruct mq_attr attributes;
attributes.mq_flags = 0; /* Only this can be modified at mq_open */
attributes.mq_maxmsg = 10;
attributes.mq_msgsize = MSG_SIZE;
attributes.mq_curmsgs = 0;
queueDescriptor = mq_open(QUEUE_NAME, O_CREAT |O_WRONLY, 0777, &attributes);
No se si los tiros irán por ahí, ya que no tengo un linux a mano y en casa tampoco podré probarlo en una temporadita porque mi placa base murió durante el fin de semana con solo 3 añitos de vida :(
Da la impresión de que puedes estar creando la cola dos veces. Piensa que uno de los extremos es el que crea la cola y el otro extremo simplemente se une a dicha cola.
Un saludo.