Linux进程间通讯之消息队列
1. 基本概念
消息队列的最佳定义是:内核地址空间中的内部链表。消息可以顺序地发送到队列中,
并以几种不同的方式从队列中获取。当然,每个消息队列都是由 IPC标识符所唯一标识的。
2. 内部和用户数据结构
要完成理解象系统 V IPC这样复杂的问题,关键是要彻底熟悉内核的几个内部数据结构。
甚至对那些最基本的操作来说,直接访问这些结构中的某几个结构也是必要的,而其他的结
构则停留在一个更低的级别上。
3. 消息缓冲区
我们要介绍的第一个结构是 msgbuf结构。这个特殊的数据结构可以认为是消息数据的模
板。虽然定义这种类型的数据结构是程序员的职责,但是读者绝对必须知道实际上存在
msgbuf类型的结构。它是在在 linux/msg.h中定义的,有2个成员:
• mtype—它是消息类型,以正数来表示。这个数必须为一个正数!
• mtext—它就是消息数据。
4. 内核msg结构
内核把消息队列中的每个消息都存放在 msg结构的框架中。该结构是在 linux/msg.h中定义
的,如下是其成员的描述:
• msg_next—这是一个指针,指向消息队列中的下一个消息。在内核寻址空间中,它们
是当作一个链表存储的。
• msg_type—这是消息类型,它的值是在用户结构 msgbuf中赋予的。
• msg_spot—这是一个指针,指向消息体的开始处。
• msg_ts—这是消息文本(消息体)的长度。
• 内核 msgid_ds结构—IPC对象分为三类,每一类都有一个内部数据结构,该数据结构
是由内核维护的。对于消息队列而言,它的内部数据结构是 msqid_ds结构。对于系统上
创建的每个消息队列,内核均为其创建、存储和维护该结构的一个实例。该结构在
linux/msg.h中定义,如下所示:
struct msqid_ds{
struct ipc_perm msg_perm;
msgqnum_t msg_qnum;
msglen_t msg_qbytes;
pid_t msg_lspid;
pid_t msg_lrpid;
&
相关文档:
由于公司里的备份软件是每天晚上执行一次,如果员工当天不小心删除了文件,那只能回复到昨天的状态,如果是员工今天花了一天才写完的CODE,那就没法恢复 了,这样就员工一天的工作就白干了,当然你可能会说,这个员工活该,谁让他不小心了,但是当事情发生了之后,人家就会来找你解决了,虽然 你平常躲在角落里听歌、看电 ......
在LINUX环境开发驱动程序,首先要探测到新硬件,接下来就是开发驱动程序。
常用命令整理如下:
用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)
查看CPU信息:cat /proc/cpuinfo
查看板卡信息:cat /proc/pci
查看PCI信息:lspci (相比cat /proc/pci更直观)
查看内存信息:cat /proc/meminfo
......
解决方案:linux 下将tomcat的server.xml的端口改为80后以tomcat身份无法启动tomcat。
在redhat上启动tomcat(将server.xml中的端口改为80)
su - tomcat -c "$CATALINA_HOME/bin/startup.sh"
后出现:Catalina.start: LifecycleException: null.open: java.net.BindException: Permission deni ......
陈皓 (CSDN)
概述
——
什么是
makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和
professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解
HTML的标识的含义。特别 ......