Cola de mensajes (mqueue.h), error de argumento no válido, en C

Resuelto yigitkucuk asked hace 9 meses • 1 respuestas

No he podido crear ni abrir una cola de mensajes en C.

Intenté mq_open()funcionar con varios argumentos pero no salió nada.

He comprobado algunos problemas similares, pero no he podido encontrar una solución.

No estoy seguro de qué estoy haciendo mal.

Recibo un mq_open: Invalid argumenterror.

// Create the message queue
mqd_t mq;

// Open the message queue
mq = mq_open(argv[1], O_RDONLY | O_CREAT, 0666, NULL);
if (mq == (mqd_t)-1) {
       perror("mq_open");
       exit(EXIT_FAILURE);
}

Le estoy dando arbitrariamente el nombre 'a'.

yigitkucuk avatar Feb 15 '24 23:02 yigitkucuk
Aceptado

Le estoy dando arbitrariamente el nombre 'a'.

Ese es un nombre no válido para una cola de mensajes. Dichos nombres deben comenzar con una "/" inicial. Esto se detalla en la página de manual de mq_overview , a la que se hace referencia en la página de manual de mq_open:

Las colas de mensajes se crean y abren utilizando mq_open(3); esta función devuelve un descriptor de cola de mensajes (mqd_t), que se utiliza para hacer referencia a la cola de mensajes abierta en llamadas posteriores. Cada cola de mensajes se identifica mediante un nombre de la forma /algúnnombre; es decir, una cadena terminada en nulo de hasta NAME_MAX (es decir, 255) caracteres que consta de una barra diagonal inicial, seguida de uno o más caracteres, ninguno de los cuales son barras diagonales. Dos procesos pueden operar en la misma cola pasando el mismo nombre a mq_open(3).

dbush avatar Feb 15 '2024 16:02 dbush