`
隐形的翅膀
  • 浏览: 496658 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

接受消息队列

 
阅读更多
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <errno.h>
#include <string.h>

typedef struct
{
long int nType;
char szText[256];
}MSG;

int main(int argc, char** argv) {
    key_t IKey1;
    int n,nMsgId;
    MSG msg;
    if((IKey1 = ftok("/etc/profile",1)) == -1)
    {
        perror("ftok");
        exit(1);
    }
    
    if((nMsgId = msgget(IKey1,0)) == -1)
    {
        perror("msgget");
        exit(2);
    }
   
    printf("KeyID=%x\n",IKey1);
    printf("MsgID=%d\n",nMsgId);
    
    memset(&msg,0x00,sizeof(MSG));
    if((n = msgrcv(nMsgId,(const void*)&msg,sizeof(msg.szText),2L,0))<0)
    {
        perror("msgrcv");
    }
    else
    {
        printf("msgrcv return length=[%d] text=[%s]\n",n,msg.szText);
    }
   
    return 0;
}

运行结果, 消息数变为1, 长度变为6
[root@elm64 ~]# ipcs -q

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    
0x010088c2 0          root       666        12           2           

[root@elm64 ~]# ipcs -q

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    
0x010088c2 0          root       666        6            1           

[root@elm64 ~]# 
分享到:
评论

相关推荐

    C#消息队列发送及接收

    在C#编程中,我们可以利用Microsoft Message Queuing(MSMQ)库来实现消息队列的发送和接收。本文将深入探讨C#中如何使用MSMQ进行消息队列的操作,并通过示例代码来展示具体实现。 首先,我们需要理解消息队列的...

    ucOS消息队列使用

    可以使用`OSQAccept()`函数尝试立即接收消息队列中的消息,如果没有消息则返回`NULL`。 ```c void *OSQAccept(OS_EVENT *pevent, INT8U *err); ``` **4. 清空消息队列** 可以使用`OSQFlush()`函数来清空整个消息...

    STM32CubeMX FreeRTOS学习[4]-消息队列

    消息队列允许任务发送和接收消息。它在结构上可以被看作是一种先进先出(FIFO)的数据结构。消息队列可以在任务之间或者中断服务例程(ISR)与任务之间进行通信,实现异步通信。在STM32CubeMX中配置消息队列时,可以...

    模拟IO,iic从机模式,移植性强,串口中断接收消息队列

    在本文中,我们将深入探讨如何在STC15W系列单片机上实现模拟IIC从机模式,并利用串口中断接收消息队列。STC15W是STC公司推出的一款8位单片机,以其低功耗、高性价比和丰富的内部资源而受到广泛应用。 首先,我们来...

    Linux消息队列

    在接收消息时,需要使用 `msgrcv` 系统调用,指定要接收的消息队列、消息类型和要接收的消息数据。 在 msgLucy.c 程序中,首先创建了一个消息队列,并将其与文件 "msg" 关联。然后,它使用 `fgets` 函数从标准输入...

    基于网络编程中的消息队列

    它首先获取已存在的消息队列(因为没有IPC_EXCL标志,所以不会尝试创建新的队列),然后同样进入一个无限循环,接收LUCY类型的消息并显示,然后读取用户输入并发送回消息队列。 这两个程序的交互基于以下关键函数:...

    进程与消息队列进程与消息队列简单例子

    接收进程从消息队列中读取数据,并将其写回文件中。 关键函数 * `msgget`:用于创建或打开一个消息队列,返回消息队列的标识符。 * `msgsnd`:用于将数据发送到消息队列中。 * `msgrcv`:用于从消息队列中读取数据...

    C#进程间通信-消息队列代码实例

    消息队列的发送方将消息放入队列,接收方在准备好时从队列中取出并处理消息。MSMQ是微软提供的消息队列服务,它支持事务性消息、安全性和持久性,确保消息的可靠传输。 在C#中,使用`System.Messaging`命名空间中的...

    Linux--MSMQ-.rar_MSMQ Linux 平台_dsp消息队列_linux 平台_linux 消息队列_消息队列

    `msgget`用于创建或获取一个消息队列的标识符,`msgsnd`则用于将消息发送到消息队列,而`msgrcv`用来从消息队列中接收消息。这些函数在`&lt;sys/msg.h&gt;`头文件中定义,是Linux程序员进行消息队列操作的基础。 在Linux...

    消息队列——message

    在Linux系统中,消息队列是一种可靠的存储数据的方式,它允许进程将数据结构作为消息发送,并在合适的时候由其他进程接收。这种通信方式比传统的管道、共享内存或者信号量更灵活,因为它提供了数据的结构化存储和...

    linux使用消息队列实现进程间双向通信

    4. **消息过滤**:发送方可以选择向特定标识符的消息队列发送消息,接收方也可以通过消息类型来筛选接收的消息。 在我们的示例中,`msg_quene_test_server`和`msg_queue_test_client`两个程序展示了如何创建、发送...

    解决 消息队列不可用 附加Demo

    解决 “消息队列不可用 ” 附加案例 :消息队列异步接收 消息队列局域网发送与接收

    xxjyjy5.rar_LINUX消息队列_linux 消息队列_linux 消息_linux 消息队列_消息队列

    msgget用于创建或打开一个消息队列并获取其标识符,msgsnd用于向消息队列发送消息,而msgrcv则用于从消息队列接收消息。消息队列中的消息通常包含一个类型标识,使得接收进程可以选择接收特定类型的消息。 三、消息...

    利用消息队列实现进程间通信

    消息队列提供了异步通信的能力,使得进程可以在不同时刻发送和接收消息,而无需相互等待。 首先,我们有两个进程,进程A和进程B。这两个进程可能执行不同的任务,但需要通过某种方式交换信息。在C语言中,我们可以...

    用消息队列实现的简单聊天程序

    消息队列在IT行业中是一种非常重要的中间件技术,它主要用于应用程序间的异步通信,通过将消息放入消息队列,使得发送方和接收方无需同时在线即可完成数据交换,提高了系统的可扩展性和可靠性。在这个“用消息队列...

    消息队列,消息队列的使用场景,C,C++

    - 消息队列是一种缓冲区,用于存储来自发送者的消息,然后由接收者按顺序处理。每个消息都有一个特定的消息类型,接收者可以根据类型选择性地接收。 - 在FreeRTOS中,消息队列是任务间通信的手段之一,支持异步...

    linux c消息队列实现

    本资源包含四个文件,一个makefile,一个头文件,一个发送端一个接收...接收端同样按环境变量设置的键值读取指定消息队列,接收消息。 两个程序都能在linux下 跑通,要编译 直接make就行。 只想要1积分,CSDN不让我改。

    linux下进程间通信--消息队列

    - **接收消息**:使用`msgrcv()`系统调用来从队列中读取消息,可以按消息键或按顺序接收。 - **控制消息队列**:通过`msgctl()`系统调用可以实现对消息队列的控制,如设置权限、删除队列等。 3. **消息队列的优点...

    queue_C语言消息队列_

    3. **消息获取**(出队):接收进程从队列头部取出消息,检查队列是否为空,不为空则删除队头消息并更新队头指针。 4. **错误处理**:处理可能出现的内存溢出、空队列等情况。 在实时消息共享和传输中,消息队列...

    消息队列编程C++编程示例

    消息队列编程C++示例 消息队列编程是一种进程间通信机制,在 Unix 系统 V 版本中广泛应用。消息队列是一个链表,存储着具有特定格式和优先级的消息记录。对消息队列有写权限的进程可以添加新消息,而对消息队列有读...

Global site tag (gtag.js) - Google Analytics