CN103019653B - 一种基于linux系统的内核消息分发方法 - Google Patents
一种基于linux系统的内核消息分发方法 Download PDFInfo
- Publication number
- CN103019653B CN103019653B CN201210489745.XA CN201210489745A CN103019653B CN 103019653 B CN103019653 B CN 103019653B CN 201210489745 A CN201210489745 A CN 201210489745A CN 103019653 B CN103019653 B CN 103019653B
- Authority
- CN
- China
- Prior art keywords
- message
- core
- information
- background process
- monitoring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000008569 process Effects 0.000 claims abstract description 46
- 238000012544 monitoring process Methods 0.000 claims abstract description 37
- 230000009471 action Effects 0.000 claims abstract description 6
- 230000005540 biological transmission Effects 0.000 abstract description 5
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Abstract
本发明公开了一种基于linux系统的内核消息分发方法,其首先创建一内核消息监听后台进程及消息消费队列,然后,在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中,当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。其通过建立一个内核消息监听后台进程,提供了简单易用地内核消息监听注册方法和多种消息回调方法。使得在应用层中不同应用进程或模块可以简单方法来实现内核与用户应用间的信息交流与传递。
Description
技术领域
本发明涉及linux平台技术领域,尤其涉及一种基于linux系统的内核消息分发方法。
背景技术
Linux是一种自由和开放源码的类Unix操作系统,可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux系统是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。
在linux下内核管理着各种设备的使用并把设备的状态信息或变化事件以内核消息或事件的形式发布出去,在应用层需要通过特定途径来获得内核各种消息或事件从而实现内核与用户应用间的信息交流与传递。在实际中会有多个应用或者多个模块需要监听同一种内核消息或事件,需要在多个应用或者多个模块中进行内核事件的分发。
目前,在现有技术中,对于不同应用需要监听或着获得内核事件时,在不同应用中或者不同模块中独自建立监听套接字来直接监听获得内核消息;或者使用udev来获得设备插拔等内核事件。
然而,在不同应用中或者不同模块中独自建立监听套接字来直接监听获得内核消息,对于同一个内核消息的监听往往只有一个应用或者模块能得到消息;而对于udev(linux的设备管理器)而言,只有在linux内核版本高于某特定版本时才能正常工作。
有鉴于此,现有技术有待改进和提高。
发明内容
鉴于现有技术的不足,本发明目的在于提供一种基于linux系统的内核消息分发方法。旨在解决现有技术中linux系统中红对于不同需要监听的内核事件通过在不同应用中或者不同模块中独自建立监听套接字来直接监听带来的资源浪费等问题。
本发明的技术方案如下:
一种基于linux系统的内核消息分发方法,其中,包括以下步骤:
S1、创建一内核消息监听后台进程及消息消费队列,所述内核消息监听后台进程用于监控所有内核消息或者事件,并在所述后台进程中实现对事件注册者的消息分发传送;所述消息消费队列用于存储需要用户需要监听的消息类型或者消息关键字以及消息回调方式信息;
S2、在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中;
S3、当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。
优选地,所述的基于linux系统的内核消息分发方法,其中,所述步骤S2中监听信息包括:需要监听的消息类型或者消息关键字,以及消息发生后消息回调的消息ID或者套接字端口号。
优选地,所述的基于linux系统的内核消息分发方法,其中,所述步骤S3中是否有相匹配的监听信息具体包括:是否有消息类型的注册信息,及是否和消息关键字相匹配。
有益效果:
本申请的基于linux系统的内核消息分发方法,通过建立一个内核消息监听后台进程, 提供了简单易用地内核消息监听注册方法和多种消息回调方法。使得在应用层中不同应用进程或模块可以简单方法来实现内核与用户应用间的信息交流与传递。
附图说明
图1为本申请的基于linux系统的内核消息分发方法的流程图。
具体实施方式
本发明提供一种基于linux系统的内核消息分发方法,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,其为本申请的基于linux系统的内核消息分发方法的流程图。如图所示,所述基于linux系统的内核消息分发方法,其中,包括以下步骤:
S1、创建一内核消息监听后台进程及消息消费队列,所述内核消息监听后台进程用于监控所有内核消息或者事件,并在所述后台进程中实现对事件注册者的消息分发传送;所述消息消费队列用于存储需要用户需要监听的消息类型或者消息关键字以及消息回调方式信息;
S2、在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中;
S3、当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。
下面分别针对上述步骤进行具体描述。
所述步骤S1为创建一内核消息监听后台进程及消息消费队列,所述内核消息监听后台进程用于监控所有内核消息或者事件,并在所述后台进程中实现对事件注册者的消息分发传送;所述消息消费队列用于存储需要用户需要监听的消息类型或者消息关键字以及消息回调方式信息。举例来说,可通过创建Netlink套接字以侦听所有内核信息,Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。Netlink套接字可以使用标准的套接字APIs来创建。socket(), bind(), sendmsg(), recvmsg() 和 close()很容易地应用到 netlinksocket。
步骤S2为在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中,在本实施例中,所述步骤S2中监听信息包括:需要监听的消息类型或者消息关键字,以及消息发生后消息回调的消息ID或者套接字端口号。
所述步骤S3为当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。具体来说,即逐一判断消息消费队列中是否有用户需要对该消息类型进行消费,如果不是则返回,如果是则进一步判断该消息是否和用户消息关键字相匹配,如果不匹配则返回,如果匹配则获取用户注册的消息回调方式,并以用户注册的消息回调方式向用户分发所述内核信息。
进一步地,在本实施例中,所述步骤S3中是否有相匹配的监听信息具体包括:是否有消息类型的注册信息,及是否和消息关键字相匹配。
综上所述,本申请的基于linux系统的内核消息分发方法,其首先创建一内核消息监听后台进程及消息消费队列,然后,在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中,当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。其通过建立一个内核消息监听后台进程, 提供了简单易用地内核消息监听注册方法和多种消息回调方法。使得在应用层中不同应用进程或模块可以简单方法来实现内核与用户应用间的信息交流与传递。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (3)
1.一种基于linux系统的内核消息分发方法,其特征在于,包括以下步骤:
S1、创建一内核消息监听后台进程及消息消费队列,所述内核消息监听后台进程用于监控所有内核消息或者事件,并在所述后台进程中实现对事件注册者的消息分发传送;所述消息消费队列用于存储用户需要监听的消息类型或者消息关键字以及消息回调方式信息;
S2、在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中;
S3、当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作;
所述步骤S3具体步骤为:逐一判断消息消费队列中是否有用户需要对该消息类型进行消费,如果不是则返回,如果是则进一步判断该消息是否和用户消息关键字相匹配,如果不匹配则返回,如果匹配则获取用户注册的消息回调方式,并以用户注册的消息回调方式向用户分发所述内核信息。
2.根据权利要求1所述的基于linux系统的内核消息分发方法,其特征在于,所述步骤S2中监听信息包括:需要监听的消息类型或者消息关键字,以及消息发生后消息回调的消息ID或者套接字端口号。
3.根据权利要求1或2所述的基于linux系统的内核消息分发方法,其特征在于,所述步骤S3中是否有相匹配的监听信息具体包括:是否有消息类型的注册信息,及是否和消息关键字相匹配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210489745.XA CN103019653B (zh) | 2012-11-27 | 2012-11-27 | 一种基于linux系统的内核消息分发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210489745.XA CN103019653B (zh) | 2012-11-27 | 2012-11-27 | 一种基于linux系统的内核消息分发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103019653A CN103019653A (zh) | 2013-04-03 |
CN103019653B true CN103019653B (zh) | 2018-02-06 |
Family
ID=47968295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210489745.XA Active CN103019653B (zh) | 2012-11-27 | 2012-11-27 | 一种基于linux系统的内核消息分发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103019653B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580209B (zh) * | 2015-01-06 | 2017-08-01 | 烽火通信科技股份有限公司 | 实现多平台消息处理的装置及方法 |
CN105657309A (zh) * | 2015-12-29 | 2016-06-08 | Tcl数码科技(深圳)有限责任公司 | 一种执法记录仪多路数据采集方法及系统 |
CN106293969B (zh) * | 2016-08-09 | 2019-09-24 | 上海盈方微电子有限公司 | Linux进程间通讯方法及装置、进程退出监听方法 |
CN108121607A (zh) * | 2016-11-28 | 2018-06-05 | 厦门雅迅网络股份有限公司 | 事件的上报方法及上报系统 |
CN107733692A (zh) * | 2017-09-21 | 2018-02-23 | 烽火通信科技股份有限公司 | 通信设备的1+1冗余备份方法及系统 |
CN110875910B (zh) * | 2018-08-31 | 2022-10-28 | 阿里巴巴集团控股有限公司 | 一种获取网络传输信息的方法、装置及系统 |
CN113779570B (zh) * | 2021-09-18 | 2024-02-23 | 深信服科技股份有限公司 | 一种基于核心进程的安全防护方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178662A (zh) * | 2006-11-08 | 2008-05-14 | 中兴通讯股份有限公司 | 一种嵌入式linux应用进程的监控方法 |
CN101403983A (zh) * | 2008-11-25 | 2009-04-08 | 北京航空航天大学 | 基于虚拟机的多核处理器的资源监控方法及系统 |
CN102567667A (zh) * | 2011-12-13 | 2012-07-11 | 中标软件有限公司 | 一种智能信息设备及其操作系统 |
CN102830970A (zh) * | 2012-08-10 | 2012-12-19 | 深圳市共进电子股份有限公司 | 一种适用于Linux嵌入式系统的热插拔处理方法 |
-
2012
- 2012-11-27 CN CN201210489745.XA patent/CN103019653B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178662A (zh) * | 2006-11-08 | 2008-05-14 | 中兴通讯股份有限公司 | 一种嵌入式linux应用进程的监控方法 |
CN101403983A (zh) * | 2008-11-25 | 2009-04-08 | 北京航空航天大学 | 基于虚拟机的多核处理器的资源监控方法及系统 |
CN102567667A (zh) * | 2011-12-13 | 2012-07-11 | 中标软件有限公司 | 一种智能信息设备及其操作系统 |
CN102830970A (zh) * | 2012-08-10 | 2012-12-19 | 深圳市共进电子股份有限公司 | 一种适用于Linux嵌入式系统的热插拔处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103019653A (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103019653B (zh) | 一种基于linux系统的内核消息分发方法 | |
US8850610B2 (en) | Mobile device peripherals management system and multi-data stream technology (MdS) | |
WO2018076759A1 (zh) | 基于区块链的多链管理方法、系统、电子装置及存储介质 | |
EP3484125A1 (en) | Method and device for scheduling interface of hybrid cloud | |
US8762544B2 (en) | Selectively communicating data of a peripheral device to plural sending computers | |
US8375200B2 (en) | Embedded device and file change notification method of the embedded device | |
US10693816B2 (en) | Communication methods and systems, electronic devices, and computer clusters | |
US9697165B2 (en) | Server system for synchronizing memory data of motherboards | |
WO2019104974A1 (zh) | 基于dubbo平台的服务自动启停方法、服务器及存储介质 | |
US20070115818A1 (en) | Triggered notification | |
US9122847B2 (en) | Mobile device peripherals management system and multi-data stream technology (MdS) | |
CN110719311B (zh) | 分布式协调服务方法、系统及计算机可读存储介质 | |
CN102916998A (zh) | 一种基于云计算的网络公共白板系统及方法 | |
CN108900651A (zh) | 基于多租户环境的Kubernetes与Neutron对接方法、存储介质、设备 | |
US8356102B2 (en) | Selective connection between corresponding communication components involved in a teleconference | |
WO2024032660A1 (zh) | 账户数据的更改方法、装置、计算机设备和存储介质 | |
CN110134564A (zh) | 一种可视化的Kafka集群监控方法 | |
WO2023087766A1 (zh) | 双系统通信方法、装置、电子设备及计算机可读存储介质 | |
US9391918B2 (en) | Communicating data in flows between first and second computers over a network | |
CN106452966A (zh) | 一种OpenStack云桌面的多网关管理的实现方法 | |
WO2019062019A1 (zh) | 一种数据列表的导出方法及其终端 | |
CN111654525A (zh) | 混合云管理方法、装置、设备及介质 | |
CN107026829A (zh) | 一种跨终端进行语音录入的交互系统及方法 | |
CN104506630B (zh) | 基于用户角色的权限数据生成方法、服务器及系统 | |
CN107517459A (zh) | 一种无线传屏中建立连接的方法、装置、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |