⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testmq.c

📁 软件简介 1.vxworks中有关posix消息队列的一个例子 2.本软件基于c语言开发 3.开发平台为windriver公司的tornada开发平台 4.经过交叉调试后测试成功
💻 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 + -