从函数名就可以看出,msgsnd()函数是用来向消息队列发送消息的。在linux/msg.h 它
的函数定义是这样的:
系统调用: msgsnd()
函数声明: int msgsnd ( int msqid, struct msgbuf *msgp, int msgsz, int msgflg )
返回值: 0 on success
-1 on error: errno = EAGAIN (queue is full, and IPC_NOWAIT was asserted)
EACCES (permission denied, no write permission)
EFAULT (msgp address isn't accessable – invalid)
EIDRM (The message queue has been removed)
EINTR (Received a signal while waiting to write)
EINVAL (Invalid message queue identifier, nonpositive
message type, or invalid message size)
ENOMEM (Not enough memory to copy message buffer)
传给msgsnd()函数的第一个参数msqid 是消息队列对象的标识符(由msgget()函数得
到),第二个参数msgp 指向要发送的消息所在的内存,第三个参数msgsz 是要发送信息的
长度(字节数),可以用以下的公式计算:
msgsz = sizeof(struct mymsgbuf) - sizeof(long);
第四个参数是控制函数行为的标志,可以取以下的值:
0,忽略标志位;
IPC_NOWAIT,如果消息队列已满,消息将不被写入队列,控制权返回调用函数的线
程。如果不指定这个参数,线程将被阻塞直到消息被可以被写入。
这里我们将创建一个封装函数来演示msgsnd()函数的使用:
int send_message( int qid, struct mymsgbuf *qbuf )
{
int result, length;
/* The length is essentially the size of the structure minus sizeof(mtype) */
length = sizeof(struct mymsgbuf) - sizeof(long);
if((result = msgsnd( qid, qbuf, length, 0)) == -1)
{
return(-1);
}
return(result);
}

msgsnd()函数相关推荐

  1. (P26)system v消息队列:msgsnd函数 ,msgrcv函数

    文章目录 1.msgsnd函数 2.msgrcv函数 1.msgsnd函数 功能:把一条消息添加到消息队列中原型:int msgsnd(int msqid, const void *msgp, siz ...

  2. msgsnd()函数 msgrcv()函数

    msgsnd()函数 从函数名就可以看出,msgsnd()函数是用来向消息队列发送消息的.在linux/msg.h 它 的函数定义是这样的: 系统调用: msgsnd() 函数声明: int msgs ...

  3. msgsnd函数 msgrcv函数的一些小问题(IPC_NOWAIT慎用!)

    这两个函数别看它简单,真的是一不小心就会出错的啊 报错1:msgsnd: Invalid argument msgrcv: Argument list too long 这真的是一个最常见的错误了.. ...

  4. 函数msgsnd()及函数msgrcv()参数详解

    最近看system V消息队列,在看到msgsnd()这个函数时,发现了一个错误.(注:我看的是UNIX网络编程卷二:进程间通信 第二版) msgsnd()函数:追加一条新消息到消息队列的系统调用语法 ...

  5. msgsnd/msgrcv函数祥解

    ================================ msgrcv()函数 ============================ msgrcv()函数被用来从消息队列中取出消息.它在l ...

  6. linux 声明消息函数,linux消息队列函数--解析

    #include www.2cto.com --------------------------------------------------------------------- 1.系统建立IP ...

  7. exit函数_Linux进程间通信详解(三) 消息队列及函数

    消息队列的概念 消息队列就是一个消息的链表,每个消息队列都有一个队列头,用结构struct msg_queue来描述.队列头中包含了该队列的大量信息,包括消息队列的键值.用户ID.组ID.消息数目.读 ...

  8. linux c语言内核函数手册,Linux C函数实例速查手册

    函数学习目录: 第1章 初级I/O函数 1.1 close函数:关闭已经打开的文件 1.2 creat函数:创建一个文件 1.3 dup函数:复制文件描述符 1.4 dup2函数:复制文件描述符到指定 ...

  9. linux 编程函数原型与用法

    函数原型以及部分实例应用 --------------------------------------------------------------------------------------- ...

最新文章

  1. 漫画:垃圾男人分类图鉴
  2. 什么时候是找工作的最佳时期? | 原力计划
  3. loadscript加载
  4. Gradle 设置本地maven
  5. 深入理解SpringBoot之装配条件
  6. 使用Flutter之后,我们的CPU占用率降了50%
  7. 的it生活_IT圈生活图鉴篇三丨下班后的突变画风
  8. Mac下安装和使用GunPG(GPG)
  9. 201671010128 2017-10-08《Java程序设计》之Lambda与内部类
  10. QT:基本知识(一);
  11. 利用ACS来实现AAA服务
  12. jdk1.8要安装什么mysql_Window下安装JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程图解
  13. 羡慕的泪水!显卡对决!GPU A6000和RTX 3090 性能对比
  14. 计算机无法安装网卡驱动,电脑经验遇到网卡驱动安装不上的问题,该如何解决呢?一起来看看...
  15. 层次分析法和多属性决策算法
  16. 董文永武汉大学计算机学院,董文永 - 教师简历 CV- Computer School of Wuhan University...
  17. 目前世界上15款优秀杀毒软件
  18. Pathon安装教程环境配置教程(Pathon2.7和3.7的区别)
  19. 杭电2818——带权并差集
  20. fastqc检验时不能执行java_fastqc出现错误

热门文章

  1. 7.DenseNet(Dense Convolutional Network )
  2. 测试架构师修炼之道_学习笔记
  3. CGB2202-DAY06-多线程,锁
  4. leetcode 53 最大自序和
  5. Python量化交易实战-10实时获取股票的数据函数封装
  6. 全国计算机有一级学科博士点的学校,拥有一级学科博士点能否说明一个学校的这个专业较强?...
  7. 奇迹服务器端 物品修改,服务器技术交流_奇迹S12NPC商店物品的修改和NPC商店编号的查询_-921根据地_只做有质量的游戏 - Powered by Discuz!...
  8. 【转】淮左白衣-解决maven管理SSM中mybatis的mapper文件扫描失败的问题
  9. 多个短视频+背景音乐合成
  10. 开封微信朋友圈广告是如何投放的?