首页 > 编程知识 正文

消息队列重试机制,消息队列满了怎么办

时间:2023-05-05 18:14:58 阅读:52595 作者:4571

消息队列、信号和共享内存经常用于在Linux服务器端编程的进程间通信环境中。 两个进程必须以这三种方式进行通信。 在这种情况下,必须约定唯一的id号码进行通信。 正好文件的设备编号和节点是唯一的,可以对其进行稍微修改以生成唯一的编号。 此时,ftok ) )函数满足该条件,因此可以这样做

函数的原型语义key_tFtok(constchar*pathname,int id ); 成功返回了key_t键值。 错误:-1、错误的原因是保存在error中的参数的含义pathname文件名必须存在且必须可访问。 与权限无关的id称为id子序列,采用低8位的数字。 1-255到此为止,ftok基本介绍了。 在这里写demo

# include stdio.h # include stdlib.h # includesys/types.h # includesys/IPC.h # includesys/stat.h # include unistd=2) printf (使用: ftok pathname ); 退出(1; }stat(argv[1],stat1 ); printf(ST_dev:%LX,st_ino:%lx,key:%x(n ),(无符号长整型) stat1.st_dev,)无符号长整型printf(ST_dev:%LX,st_ino:%lx,key:%x(n ),(无符号长整型) stat1.st_dev,)无符号长整型退出(0; }以上demo的执行结果如下。

root @ MC Chen :/home/ftok # ls-if Tok 1846264 ftok root @ MC Chen :/home/ftok #./ftokftokst _ dev 3365374; fc01,ST kktok key:2012bf8根据执行结果,ftok取得的关键值为ftok )函数的第二个参数之后的8个bit,st_dev的

这里有一个疑问。 删除pathname后重新创建会怎么样? 返回的key和删除前的都一样吗? 答案是否,也就是说不一定

第一,在arm 32位计算机上执行的结果的截面图中,inode发生了变化

第二种情况:在ubuntu64位计算机上运行结果不会改变inode

root @ MC Chen :/home/ftok # ls-IMS G1.q 1846265 msg1. q root @ MC Chen :/home/ftok # RM msg1. q root @ MC Chen 33666 因为是ls-Imsg1.q1846265msg1.q,所以要防止key的值发生变化,请指定固定的key值,而不要删除ftok (的文件或ftok )、ftok )。 上述两种情况下,为什么调查的inode之一会变化,一个不会变化呢

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。