首页 > 其他分享 >POSIX发送接收消息

POSIX发送接收消息

时间:2022-10-11 12:35:25浏览次数:43  
标签:include mqd prio int argv 发送 mq POSIX 接收

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

int main(int argc, char **argv) {
	mqd_t mqd;
	void *ptr;
	size_t len, prio;

	if(argc!=4) {
		fprintf(stderr, "usage: ./a.out <name> <#bytes> <priority>\n");
		exit(-1);
	}

	len=atoi(argv[2]);
	prio=atoi(argv[3]);

	mqd=mq_open(argv[1], O_WRONLY);

	ptr=calloc(len, sizeof(char));

	mq_send(mqd, ptr, len, prio);

	exit(0);
}

往队列中增加消息运行示例:

$ ./mqsend /test 100 30
$ ./mqgetattr /test
max #msgs=10, max #bytes/msg=8192, #currently on queue=1

  

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <mqueue.h>

int main(int argc, char **argv) {
	int c, flags;
	mqd_t mqd;
	ssize_t n;
	unsigned int prio;
	void *buff;
	struct mq_attr attr;

	flags=O_RDONLY;
	while((c=getopt(argc, argv, "n"))!=-1) {
		switch(c) {
		case 'n':
			flags|=O_NONBLOCK;
			break;
		}
	}

	if(optind!=argc-1) {
		fprintf(stderr, "usage: ./a.out [-n] <name>\n");
		exit(-1);
	}

	mqd=mq_open(argv[optind], flags);
	mq_getattr(mqd, &attr);
	buff=malloc(attr.mq_msgsize);

	n=mq_receive(mqd, buff, attr.mq_msgsize, &prio);
	printf("read %ld bytes, priority=%u\n", (long)n, prio);

	exit(0);
}

从队列中读入消息:

$ ./mqreceive -n /test
read 100 bytes, priority=30
$ ./mqgetattr /test
max #msgs=10, max #bytes/msg=8192, #currently on queue=0

标签:include,mqd,prio,int,argv,发送,mq,POSIX,接收
From: https://www.cnblogs.com/donggongdechen/p/16778813.html

相关文章

  • shell实现接口初次失败告警,恢复也发送一次通知
    1、该shell判断第一次失败告警,接口恢复发送一次通知参数:一个参数接口返回结果0表示成功1表示失败脚本详情[root@localhostbd]#morebd-new.sh#!/bin/bashw=$(c......
  • 【光通信】用于可见光通信的OFDM发射机和接收机
    1.软件版本MATLAB2013b2.本算法理论知识可见光通信,2篇比较好的论文:​​http://wenku.baidu.com/view/3c077736a32d7375a4178022.html​​​​http://www.docin.com/p-121488......
  • SpringBoot 整合邮件发送
    邮件发送更多参考:https://mrbird.cc/Spring-Boot-Email.html引入依赖在SpringBoot中发送邮件,需要用到spring-boot-starter-mail,引入spring-boot-starter-mail:<depend......
  • python解决urllib发送请求报错:urllib.error.URLError: <urlopen error [SSL: CERTIFIC
    在使用urllib.request.Request(url)前,添加代码放到最前面importssl ssl._create_default_https_context=ssl._create_unverified_context问题缘由:因为访问的网站是htt......
  • Centos7使用sendEmail-v1.56发送邮件
    Centos7使用sendEmail-v1.56发送邮件注意:Centos7默认使用perl5.16,而sendEmail-v.1.56要求使用perl5.10。否则会报以下错误。所以需要下载并安装Perl-5.10Usingthedefa......
  • shell 企业微信机器人发送消息
    目录shell企业微信机器人发送消息企业微信群创建机器人实例shell企业微信机器人发送消息企业微信群创建机器人创建完机器人后我们会获取到一个webhook,通过curl调用we......
  • Springboot整合RestTemplate发送http请求
    据技术选型总结常见的三种方式发送http请求,本文介绍Springboot整合RestTemplate发送http请求方式,其他两种如下链接java原生发送http请求_程序三两行的博客HttpClient和OkHtt......
  • Springboot如何发送邮件
    邮件发送过程简介依赖 配置文件可以配置的属性值例如[email protected]=123456#授权码spring.mail.host=smtp.qq.com#smtp地址spring......
  • HttpClient和OkHttp发送http请求
    根据技术选型总结常见的三种方式发送http请求,本问介绍框架中常用的HttpClient和OkHttp方式,其他两种如下链接​​​springboot中使用restTemplate发送http请求​​ 一、http......
  • java原生发送http请求
    根据技术选型总结常见的三种方式发送http请求,本问介绍jdk原生方式,其他两种如下链接​​httpclient和okhttp​​​​Springboot整合RestTemplate发送http请求​​使用JDK原生......