当前位置:  技术问答>linux和unix

怎样在程序中修改一个系统V消息队列中消息的个数::

    来源: 互联网  发布时间:2016-12-01

    本文导语:  如题:想通过程序中的系统调用修改一个消息队列中消息的个数:  例如:megctl(msqid,IPC_SET,msqid_ds*buf); 但是;书上说只能修改msqid_ds结构中的四个字段:msg _perm.uid、msg_perm_gid、msgg_perm .mode和msg_perm.qbytes. 具体怎样...

如题:想通过程序中的系统调用修改一个消息队列中消息的个数:
 例如:megctl(msqid,IPC_SET,msqid_ds*buf);
但是;书上说只能修改msqid_ds结构中的四个字段:msg _perm.uid、msg_perm_gid、msgg_perm .mode和msg_perm.qbytes.
具体怎样设置??高人出手!!!

|
查手册。
我经常用"www.die.net"查函数。


struct msqid_ds {
    struct ipc_perm msg_perm;     /* Ownership and permissions
    time_t         msg_stime;    /* Time of last msgsnd() */
    time_t         msg_rtime;    /* Time of last msgrcv() */
    time_t         msg_ctime;    /* Time of last change */
    unsigned long  __msg_cbytes; /* Current number of bytes in
                                    queue (non-standard) */
    msgqnum_t      msg_qnum;     /* Current number of messages
                                    in queue */
    msglen_t       msg_qbytes;   /* Maximum number of bytes
                                    allowed in queue */
    pid_t          msg_lspid;    /* PID of last msgsnd() */
    pid_t          msg_lrpid;    /* PID of last msgrcv() */
};



IPC_SET 
Write the values of some members of the msqid_ds structure pointed to by buf to the kernel data structure associated with this message queue, updating also its msg_ctime member. The following members of the structure are updated: msg_qbytes, msg_perm.uid, msg_perm.gid, and (the least significant 9 bits of) msg_perm.mode. The effective UID of the calling process must match the owner (msg_perm.uid) or creator (msg_perm.cuid) of the message queue, or the caller must be privileged. Appropriate privilege (Linux: the CAP_IPC_RESOURCE capability) is required to raise the msg_qbytes value beyond the system parameter MSGMNB. 


确定你的消息大小,把msg_qbytes设置为“消息大小*消息个数”

|
貌似msgctl不能修改消息个数,只有消息队列容量

可以通过调整内核参数的方式调整消息个数
MSGSEG 在单个队列里能存在的最大数量的消息片断。

参考Linux IPC 参数设定

    
 
 

您可能感兴趣的文章:

  • **********写了一个简单的UDP程序,接受英文的消息正常,接受中文的消息显示不完整,请问是什么原因
  • 创建消息队列,接受消息失败,接受程序再发送错误消息给发送程序//程序能运行,不出结果
  • 程序在普通用户下执行,无法发送消息
  • linux下,一个程序如何向另一个程序发送消息,另一个程序如何接收
  • 即时消息聊天应用程序 Cryptocat
  • 哪位高手能给个创建消息队列的程序
  • 怎样向另外一个GUI程序发送模拟的键盘消息?
  • 消息及通知程序 dzen
  • J2ME短消息程序 goText
  • 哪位同盟可以我一份jsp+mysql的消息发布程序,高分赠送!
  • 怎样得到一个X Windows下程序运行的消息!
  • 请问终端回显消息是否会对程序正确执行造成影响?
  • 高分求救!linux中两个应用程序之间可以用基于system v的消息队列进行通讯吗?
  • 如何使用shell脚本实现监控程序消息队列阻塞情况?
  • Linux下c++程序中如何发消息给某个指定用户登陆了的所有tty窗口?
  • 进来看看,怎样监控一个程序开始运行的消息?
  • 我的测试驱动程序printk设置了KERN_ALERT打印不出消息在控制台上?为什么?
  • 一个简单UDP的程序,客户端发送消息后,服务器端正常接受,但是服务器端发不出消息?
  • 【新手提问】命令行的程序如何接收键盘消息?
  • 初次编写消息队列程序,错误百出。
  • 关于工作队列的一个简单程序出错,请高手指点,谢谢。
  • 用C++实现队列的程序代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • socket程序中read字节个数与write字节个数不同
  • linux程序获取显示器个数
  • linux中 写shell程序,用于统计文件中关键字的个数
  • 用if语句写出找出x,y,z三个数中最大值的程序
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • windows server2008上PowerBuilder程序系统错误解决方法
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 程序员的八种级别,你属于哪一级?
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径
  • 在docker容器中通过apt-get安装新的程序
  • 为什么linux下的C++程序这么少见? 请问那里有linux下的C++程序?什么类型的程序都可以.
  • linux下通过crond实现自动执行程序
  • 我写了个linux下的网络程序,程序在多个电脑间通信,但是我没有多个电脑,怎么调试这样的程序啊?
  • http协议介绍,文件上传分析及程序举例
  • 在java控制台程序中,可以用System.exit(0);使用一个程序终止,那么在servlet中如何使一个servlet程序终止呢?
  • 程序员赚钱致富的6种方法
  • 程序调用脚本,脚本启动另一个程序,如何让原始程序彻底释放资源?
  • HASH查找的程序实现及性能分析
  • python计算程序开始到程序结束的运行时间和程序运行的CPU时间
  • 程序员为了健康必看!早晨空腹喝水,是对还是错?
  • jsp程序运行一次后,再修改原jsp程序,为什么运行还是的还是原来的程序??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    WEB前端 iis7站长之家