ProDeveloperTutorial.com

教程和编程解决方案
菜单
  • Shell脚本
  • 系统设计
  • Linux系统编程
  • 4g LTE
  • 编码问题
  • C
  • C ++
  • DSA
  • GIT

Linux系统编程:POSIX消息队列

前开发者教程 2020年5月22日

在本章中,我们将学习:

1.简介

2. API’在POSIX Message Queue中使用

3. POSIX消息队列示例

介绍:

在上一章中,我们了解了System V消息队列。在本章中,我们将学习POSIX消息队列

您应该在标题下面包含以使用Message Queue:

#包括<mqueue.h>

以下是使用Message Queue的API:

1. mq_open()

mqd_t mq_open(const char * name,int oflag,… )

它将使用“name”并返回消息队列描述符。

 

2. mq_close()

int mq_close(mqd_t mqdes);

它将关闭消息队列描述符和消息队列之间的关联。

 

3. mq_send()

int mq_send(mqd_t mqdes,const char * msg_ptr,size_t msg_len,unsigned int msg_prio);

它用于发送由指向的消息“msg_ptr” with the length “msg_len”进入消息队列。

您也可以通过填写“msg_prio”.

4. mq_receive()

int mq_receive(mqd_t mqdes,char * msg_ptr,size_t msg_len,unsigned int * msg_prio);

它被起诉以接收来自消息队列的消息,

5. mq_setattr()

int mq_setattr(mqd_t mqdes,const struct mq_attr * mqstat,struct mq_attr * omqstat);

它用于设置结构mqstat的mq_flags。

6. mq_getattr()

int mq_getattr(mqd_t mqdes,结构mq_attr * mqstat);

它用于获取消息队列描述符mqdes引用的队列的属性。

7. mq_notify()

int mq_notify(mqd_t mqdes,const struct sigevent * notification);

当队列变为非空时,它将通知调用过程。

8. mq_unlink()

int mq_unlink(const char * name);

用于删除消息队列

消息队列示例:

#包括<stdio.h>
#include <stdlib.h>
#include <mqueue.h>


#define MAX_MSG_SIZE 4096
#define MAX_MSGS     2

int main( void )
{
	//create and send a message queue
	mqd_t mqdSend = mq_open ("/OpenCSF_MQ", O_CREAT | O_EXCL | O_WRONLY, 0600, NULL);
 	mq_send (mqdSend, "HELLO", 6, 10);
	mq_close (mqdSend);

	//open a message queue for reading
	mqd_t mqd = mq_open ("/OpenCSF_MQ", O_RDONLY);
	struct mq_attr attr;
	char *buffer = calloc (attr.mq_msgsize, 1);

	//retrieve the message from message queue
	int priority = 0;
	if ((mq_receive (mqd, buffer, attr.mq_msgsize, &priority)) == -1)
	  printf ("Failed to receive message\n");
	else
	  printf ("Received [priority %u]: '%s'\n", priority, buffer);

	//cleanup
	free (buffer);
	buffer = NULL;
	mq_close (mqd);
}

该网站上可用的教程列表:

C编程20+章C ++编程80+章
100多个编码问题数据结构和算法85+章
系统设计20+章Shell脚本编写12章
4g LTE 60+章节最常见的编码问题
5G NR 50+章Linux系统编程20+章
分享
电子邮件
鸣叫
领英
Reddit
绊倒
Pinterest的
上一篇文章
下一篇

关于作者

前开发者教程

每天我们都会讨论竞争性编程问题,请加入我们的网站:   电报频道

ProDeveloperTutorial.com

教程和编程解决方案
版权© 2020 ProDeveloperTutorial.com
从以下课程获得热门课程: 教育性的



    • <textarea class="ZtSLVZ3"><datalist id="UIJvuMl"></datalist></textarea>