linux消息队列发送结构体

mq_common.h

#pragma once

const char * mqfile = "/mqtest";

struct TEST {
    int a;
    int b;
    char c;
    double d;
};

mq_service.cpp

#include <mqueue.h>
#include <unistd.h>
#include <stdio.h>
#include <cassert>
#include <stdlib.h>
#include "mq_common.h"
#include <iostream>
int main () {
    mqd_t mqd = mq_open (mqfile, O_CREAT | O_EXCL | O_WRONLY,  0600, NULL);

    /* Ensure the creation was successful */
    if (mqd == -1)
    {
        perror ("mq_open");
        exit (1);
    }

    int si = 0;
    int count = 0;
    while(count++ < 100) {
        TEST t;
        t.a = 1 + si++;
        t.b = 2 + si++;
        t.c = 'c';
        t.d = 0.5 + si++;
        std::cout << "msg count = " << count <<
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux消息队列是一种进程间通信(IPC)方式之一。它是一个简单的消息传递机制,用于在进程之间传递数据。消息队列是一种先进先出(FIFO)的数据结构,它允许一个进程向队列中添加消息,另一个进程从队列中读取消息。 Linux消息队列由三部分组成: 1. 消息队列标识符:它是一个整数,用于标识消息队列。 2. 消息结构体:它包含要传递的数据和数据的长度。 3. 操作函数:用于创建、读取、写入和删除消息队列Linux消息队列的操作函数主要有以下几个: 1. msgget():创建或打开一个消息队列。 2. msgsnd():向消息队列中添加消息。 3. msgrcv():从消息队列中读取消息。 4. msgctl():控制和删除消息队列。 使用Linux消息队列的步骤如下: 1. 使用msgget()函数创建或打开一个消息队列,并获取消息队列标识符。 2. 使用msgsnd()函数向消息队列中添加消息。 3. 使用msgrcv()函数从消息队列中读取消息。 4. 使用msgctl()函数控制和删除消息队列Linux消息队列的优点是可以实现进程之间的异步通信,不需要像管道和FIFO一样进行同步。同时,消息队列可以缓存消息,当一个进程没有准备好读取消息时,消息不会被丢失。但是,Linux消息队列的缺点是如果发送发送的消息大小超过了消息队列的大小,消息将被截断。此外,消息队列的使用会占用一定的系统资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值