无法回显到 POSIX 消息队列

Can not echo into POSIX message queue

我尝试将一条简单消息回显到 mqueue 中,但终端总是 returns 关于回显命令的错误。

示例:

/dev/mqueue$ echo domen >> my_queue
bash: echo: write error: Invalid argument

文件夹 /dev/mqueue 中的命令 ls -li returns:

total 0
29823 -rw-rw-r-- 1 domen domen 80 dec 24 14:18 my_queue

我通过以下方式在我的 C 程序中创建 mqueue:

int fd_queue;
char queue_name[] = "/my_queue";
char message[4097];
struct mq_attr queue_parameters;
queue_parameters.mq_maxmsg = 5;
queue_parameters.mq_msgsize = 4096;
fd_queue = mq_open(queue_name,O_RDWR|O_CREAT|O_EXCL,0664, &queue_parameters);

有什么问题,我无法使用终端命令写入队列?

根本问题是 shell 不使用 mq_open() 打开消息队列,并且 echo 不使用 mq_send() 写入消息。这些是需要的工具。您需要编写一个 mqecho 命令来写入消息队列,以及一个 mqread 命令来从消息队列中读取。