📄 testmq.c
字号:
/* In this example, the mqExInit() routine spawns two tasks that
* communicate using the message queue.
*/
/* testMQ.c - example using POSIX message queues */
/* includes */
#include "vxWorks.h"
#include "mqueue.h"
#include "fcntl.h"
#include "errno.h"
#include "mqEx.h"
#include "taskLib.h"
#include "stdio.h"
/* defines */
#define HI_PRIO 31
#define MSG_SIZE 16
int mqExInit (void)
{
/* create two tasks */
if (taskSpawn ("tRcvTask", 95, 0, 4000, (FUNCPTR)receiveTask, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0) == ERROR)
{
printf ("taskSpawn of tRcvTask failed\n");
return (ERROR);
}
if (taskSpawn ("tSndTask", 100, 0, 4000, (FUNCPTR)sendTask, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0) == ERROR)
{
printf ("taskSpawn of tSendTask failed\n");
return (ERROR);
}
return (OK);
}
void receiveTask (void)
{
mqd_t mqPXId; /* msg queue descriptor */
char msg[MSG_SIZE]; /* msg buffer */
int prio; /* priority of message */
/* open message queue using default attributes */
if ((mqPXId = mq_open (MQ_NAME, O_RDWR | O_CREAT, 0, NULL))
== (mqd_t) -1)
{
printf ("receiveTask: mq_open failed\n");
return;
}
/* try reading from queue */
if (mq_receive (mqPXId, msg, MSG_SIZE, &prio) == -1)
{
printf ("receiveTask: mq_receive failed\n");
return;
}
else
{
printf ("receiveTask: Msg of priority %d received:\n\t\t%s\n",
prio, msg);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -