无法回显到POSIX消息队列

时间:2016-12-24 13:24:49

标签: c linux bash queue posix

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

例如:

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

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

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);

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

1 个答案:

答案 0 :(得分:1)

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