CN106293969A - Linux进程间通讯方法及装置、进程退出监听方法 - Google Patents

Linux进程间通讯方法及装置、进程退出监听方法 Download PDF

Info

Publication number
CN106293969A
CN106293969A CN201610645090.9A CN201610645090A CN106293969A CN 106293969 A CN106293969 A CN 106293969A CN 201610645090 A CN201610645090 A CN 201610645090A CN 106293969 A CN106293969 A CN 106293969A
Authority
CN
China
Prior art keywords
event
exits
message
kernel
registered events
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.)
Granted
Application number
CN201610645090.9A
Other languages
English (en)
Other versions
CN106293969B (zh
Inventor
陈金华
皮小军
王大岁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI INFOTM MICROELECTRONICS CO Ltd
Original Assignee
SHANGHAI INFOTM MICROELECTRONICS CO Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHANGHAI INFOTM MICROELECTRONICS CO Ltd filed Critical SHANGHAI INFOTM MICROELECTRONICS CO Ltd
Priority to CN201610645090.9A priority Critical patent/CN106293969B/zh
Publication of CN106293969A publication Critical patent/CN106293969A/zh
Application granted granted Critical
Publication of CN106293969B publication Critical patent/CN106293969B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种Linux进程间通讯方法,包括步骤:S11:核心进程轮询消息队列中的消息;S12:核心进程解析所述消息并判断所述消息是否为注册事件的事件信息;S13:当判断所述消息为注册事件的事件信息时,根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号;S14:核心进程根据所述进程号唤醒所有监听该注册事件的进程,并根据事件处理函数链表调用每个进程中该注册事件对应的事件处理函数。本发明通过采用event广播机制实现了Linux系统进程间轻量级通讯,增强了系统的稳定性,同时节省了系统的资源。

Description

Linux进程间通讯方法及装置、进程退出监听方法
技术领域
本发明涉及Linux平台技术领域,尤其涉及Linux进程间通讯方法及装置、进程退出监听方法。
背景技术
Linux是一种自由和开放源码的类Unix操作系统,可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux系统是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。
现有的Linux下进程通讯的集中主要手段简介:
管道(pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程之间的通讯,有名管克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;Linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。
报文(Message)队列(消息队列):消息队列是消息的链接表,包括Posix消息队列systemV消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。
上述现有进程通讯手段中管道需要名字、亲缘关系,且只能承载无格式字节流以及缓冲区大小受限,而信号具有承载信息量小、不可靠的限制等缺点,共享内存需要考虑进程间的同步及互斥,增加了设计的复杂度的限制。
发明内容
为解决上述技术问题,本发明提供一种Linux进程间通讯方法及装置、进程退出监听方法,能够实现简单轻量级的进程间通讯及进程退出监听。
本发明提供的技术方案如下:
本发明公开了一种Linux进程间通讯方法,包括步骤:S11:核心进程轮询消息队列中的消息;S12:核心进程解析所述消息并判断所述消息是否为注册事件的事件信息;S13:当判断所述消息为注册事件的事件信息时,根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号;S14:核心进程根据所述进程号唤醒所有监听该注册事件的进程,并根据事件处理函数链表调用每个进程中该注册事件对应的事件处理函数。
本发明通过消息队列及链表来实现Linux事件的监听,从而实现进程之间的轻量级的通讯,Linux系统上层的应用程序只需要注册需要监听的事件以及注册事件的事件处理函数,当相关的事件发生时就会调用注册事件的事件处理函数来实现进程的通讯。本发明通过采用event广播机制实现了Linux系统进程间轻量级通讯,增强了系统的稳定性,同时节省了系统的资源。
进一步优选的,所述步骤S1之前还包括步骤:S01:为每个进程建立所述事件处理函数链表;所述事件处理函数链表包括所述注册事件的事件名及对应的所述事件处理函数;S02:核心进程建立事件管理链表;所述事件管理链表包括每个注册事件的事件名及所有监听该注册事件的进程号。
进一步优选的,所述步骤S12“判断所述消息是否为注册事件的事件信息”具体包括步骤:S121:判断所述消息的类型是否为event类型;若是,执行步骤S13;否则不作处理。
进一步优选的,所述步骤S13“根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号”具体包括:S131:根据所述事件信息中的事件名查找所述事件管理链表中与所述事件名对应的进程号,获得所有监听所述事件名对应的注册事件的进程号。
本发明还公开了一种进程退出监听方法,使用上述Linux进程间通讯方法监听进程退出消息,包括步骤:S21:当有进程退出时,系统执行内核的do_exit函数;S22:所述do_exit函数调用预设的自定义函数;S23:预设进程根据所述自定义函数获取退出进程的进程信息,并封装所述进程信息生成进程退出事件信息上传至核心进程的消息队列;S24:核心进程读取并解析所述消息队列中的所述进程退出事件信息,并根据所述进程退出事件信息获得监听该进程退出事件的进程号;S25:核心进程根据所述进程号唤醒所有监听该进程退出事件的进程,并根据事件处理函数链表调用每个进程中该进程退出事件对应的事件处理函数。
本发明通过Hook技术实现系统所有进程退出的监听,通过将汇编的指令码,跳转地址转换为机器码,将系统中原本的调用函数替换为自定义函数来实现监听。本发明提供的轻量级的进程退出监听方法使用简便,相比其他的进程通讯增强了系统的稳定性,节省了系统的资源。
进一步优选的,所述步骤S21之前还包括步骤:S20:在核心进程的所述事件管理链表中建立进程退出事件的事件名及所有监听该注册事件的进程号,注册进程退出事件;同时,在监听所述进程退出事件的所有进程中建立注册所述进程退出事件对应的事件处理函数。
进一步优选的,所述进程信息包括退出进程的进程号及名称;所述步骤S23“封装所述进程信息,生成进程退出事件信息”具体包括:S231:将所述退出进程的进程号、名称与该退出进程对应的退出进程事件的事件名封装生成进程退出事件信息。
进一步优选的,所述步骤S24“核心进程读取并解析所述消息队列中所述进程退出事件信息”具体包括步骤:S241:核心进程读取所述消息队列中event类型的消息,解析所述event类型的消息获得进程退出事件信息。
进一步优选的,所述步骤S24“根据所述进程退出事件信息获得监听该进程退出事件的进程号”具体包括步骤:S242:根据所述进程退出事件信息获得进程退出事件的事件名;根据所述进程退出事件的事件名查找所述事件管理链表中与所述事件名对应的进程号,获得监听该进程退出事件的进程号。
进一步优选的,所述步骤S21和步骤S22之间还包括步骤:S215:将内核中的进程退出函数替换为预设的自定义函数。
本发明还公开一种Linux进程间通讯装置,使用上述Linux进程间通讯方法,包括:轮询模块,用于轮询消息队列中的消息;解析模块,用于解析消息队列中的所述消息;判断模块,用于判断所述消息是否为注册事件的事件信息;查找模块,用于当判断所述消息为注册事件的事件信息时根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号;执行模块,用于根据所述进程号唤醒所有监听该注册事件的进程,并根据事件处理函数链表调用每个进程中该注册事件对应的事件处理函数。
本发明提供了一种轻量级的进程间通讯方法及装置实现了event广播机制及进程退出监听,与现有技术相比,克服了现有进程间通讯方法的缺点。本发明给上层应用的使用提供了简单的接口,所有功能的实现都由event核心来实现,使用简便,同时保证了数据传输的可靠性,增强了系统的稳定性,同时节省了系统的资源。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对本发明予以进一步说明。
图1为本发明一种Linux进程间通讯方法的主要步骤示意图;
图2为本发明一种Linux进程间通讯方法的完整步骤示意图;
图3为本发明一种进程退出监听方法的主要步骤组成图;
图4为本发明一种进程退出监听方法的完整步骤组成图;
图5为本发明一种Linux系统进程间通讯装置的组成示意图。
附图标号说明:
100、轮询模块,200、解析模块,300、判断模块,400、查找模块,500、执行模块。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
在Linux下内核管理着各种设备的使用并把设备的状态信息或变化事件以内核消息或事件的形式发布出去,在应用层需要通过特定途径来获得内核各种消息或事件从而实现内核与用户应用间的信息交流与传递。在实际中会有多个应用或者多个模块需要监听同一种内核消息或事件,需要在多个应用或者多个模块中进行内核事件的分发。现有技术中对于不同应用需要监听或者获得内核事件时,在不同应用中或者不同模块中独自建立监听套接字来直接监听获得内核消息;或者使用udev来获得设备插拔等内核事件。
为此,本发明提供一种Linux进程间通讯方法,通过核心进程event广播机制实现内核消息或事件的分发。
图1为本发明一种Linux进程间通讯方法的主要步骤示意图,作为本发明的一个具体实施例,如图1所示,一种Linux进程间通讯方法,包括步骤:S11:核心进程轮询消息队列中的消息;S12:核心进程解析所述消息并判断所述消息是否为注册事件的事件信息;S13:当判断所述消息为注册事件的事件信息时,根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号;S14:核心进程根据所述进程号唤醒所有监听该注册事件的进程,并根据事件处理函数链表调用每个进程中该注册事件对应的事件处理函数。
本发明通过消息队列及链表来实现Linux事件的监听,从而实现进程之间的轻量级的通讯,Linux系统上层的应用程序只需要注册需要监听的事件以及注册事件的事件处理函数,当相关的事件发生时就会调用注册事件的事件处理函数来实现进程的通讯。本发明通过采用event广播机制实现了Linux系统进程间轻量级通讯,增强了系统的稳定性,同时节省了系统的资源。
优选的,图2为本发明一种Linux进程间通讯方法的完整步骤示意图,作为本发明一个具体实施例,如图2所示,所述步骤S1之前还包括步骤:S01:为每个进程建立所述事件处理函数链表;所述事件处理函数链表包括所述注册事件的事件名及对应的所述事件处理函数;S02:核心进程建立事件管理链表;所述事件管理链表包括每个注册事件的事件名及所有监听该注册事件的进程号。
具体的,事件处理函数链表是一个事件处理函数的列表,每个链都与某个或某些事件有关,当特定的事件发生时,就调用相应的事件处理函数链表中的回调函数,进行相应的处理。
优选的,所述步骤S12中“判断所述消息是否为注册事件的事件信息”具体包括步骤:S121:判断所述消息的类型是否为event类型;若是,执行步骤S13;否则不作处理。
优选的,所述步骤S13“根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号”具体包括:S131:根据所述事件信息中的事件名查找所述事件管理链表中与所述事件名对应的进程号,获得所有监听所述事件名对应的注册事件的进程号。
综上所述,本发明的流程具体包括:
一、注册过程:
监听事件以及事件处理函数的注册,提供优先级以及远程调用模式。实现方式为:将此注册的监听事件加入到此进程的事件处理函数链表中,同时将注册的监听事件添加到消息队列中,在event的核心进程中会读取消息队列中的注册事件添加到事件管理链表中,设置事件的相关工作模式。
二、监听过程:
系统发送监听事件,如果event的核心进程注册了此监听事件及事件的事件处理函数,将会调用此监听事件的回调函数。实现方式:将监听的事件封装后添加到消息队列中,event的核心进程读取消息队列中的消息,获取注册事件并唤醒监听此注册事件的进程,同时调用事件处理函数。如果该事件的工作模式为RPC(Remote Procedure Call,远程过程调用),事件的处理函数将事件数据处理完毕后返回给监听事件的发送进程,这样就实现了远程调用的功能。
图3为本发明一种进程退出监听方法的主要步骤组成图,作为本发明的一个具体实施例,如图3所示,一种进程退出监听方法,使用上述Linux进程间通讯方法监听进程退出消息,包括步骤:S21:当有进程退出时,系统执行内核的do_exit函数;S22:所述do_exit函数调用预设的自定义函数;S23:预设进程根据所述自定义函数获取退出进程的进程信息,并封装所述进程信息生成进程退出事件信息上传至核心进程的消息队列;S24:核心进程读取并解析所述消息队列中的所述进程退出事件信息,并根据所述进程退出事件信息获得监听该进程退出事件的进程号;S25:核心进程根据所述进程号唤醒所有监听该进程退出事件的进程,并根据事件处理函数链表调用每个进程中该进程退出事件对应的事件处理函数。
图4为本发明一种进程退出监听方法的完整步骤组成图,如图4所示,优选的,所述步骤S21和步骤S22之间还包括步骤:S215:将内核中的进程退出函数替换为预设的自定义函数。
具体的,本发明将上述Linux进程间通讯方法与Hook技术相结合,提供了一种监听进程退出的方法。Hook技术是一个相对较宽的话题,因为操作系统从ring3到ring0是分层次的结构,在每一个层次上都可以进行相应的Hook,它们使用的技术方法以及取得的效果也是不尽相同。我们知道实现一个系统调用的函数中一定会递归的嵌套有很多的子函数,即它必定要调用它的下层函数。而从汇编的角度来说,对一个子函数的调用是采用"段内相对短跳转jmp offset"来实现的,即CPU根据offset来进行一个偏移量的跳转。
如果把下层函数在上层函数中的offset替换成自定义的"Hook函数"的offset,这样上层函数调用下层函数时,就会跳到自定义的"Hook函数"中,就可以在"Hook函数"中做过滤和劫持内容的工作。
kernel inline hook技术就是修改内核函数的opcode,通过写入jmp或push ret等指令跳转到新的内核函数中。
Linux系统中进程的退出通过系统调用后都会进入到内核的do_exit函数中,do_exit将会调用自定义函数profile_task_exit,本发明中将自定义的my_profile_task_exit来替换系统调用profile_task_exit,调用完毕自定义的my_profile_task_exit后再调用profile_task_exit。在这里主要修改汇编的bl跳转指令的跳转码,来实现在do_exit中调用自定义的my_profile_task_exit,在自定义的my_profile_task_exit中获取退出进程的进程号以及名称,与对应进程退出事件的事件名封装后通过netlink上传到event核心,event的核心进程收到后广播给监听进程退出的进程。具体的,event的核心进程的广播参见上述Linux进程间通讯方法中关于核心进程唤醒监听注册事件的进程部分的详细说明。
本发明通过Hook技术实现系统所有进程退出的监听,通过将汇编的指令码,跳转地址转换为机器码,将系统中原本的调用函数替换为自定义的进程退出函数来实现监听。本发明提供的轻量级的进程退出监听方法使用简便,相比其他的进程通讯增强了系统的稳定性,节省了系统的资源。
优选的,如图4所示,在执行监听之前还包括进程退出事件及事件处理函数的注册,即本发明所述步骤S21之前还包括步骤:S20:在核心进程的所述事件管理链表中建立进程退出事件的事件名及所有监听该注册事件的进程号,注册进程退出事件;同时,在监听所述进程退出事件的所有进程中建立注册所述进程退出事件对应的事件处理函数。具体注册过程参见上述Linux进程间通讯方法中关于事件注册与事件处理函数注册的详细说明。
优选的,所述进程信息包括退出进程的进程号及名称;所述步骤S23“封装所述进程信息,生成进程退出事件信息”具体包括:S231:将所述退出进程的进程号、名称与该退出进程对应的退出进程事件的事件名封装生成进程退出事件信息。
具体的,本发明中设有一个专门的预设进程,用于接收系统下层发过来的进程退出的进程号及名称,接收后再与进程退出事件的名称一起再封装,再传给event的核心进程。
优选的,所述步骤S24“核心进程读取并解析所述消息队列中所述进程退出事件信息”具体包括步骤:S241:核心进程读取所述消息队列中event类型的消息,解析所述event类型的消息获得进程退出事件信息。
优选的,所述步骤S24“根据所述进程退出事件信息获得监听该进程退出事件的进程号”具体包括步骤:S242:根据所述进程退出事件信息获得进程退出事件的事件名;根据所述进程退出事件的事件名查找所述事件管理链表中与所述事件名对应的进程号,获得监听该进程退出事件的进程号。
图5为本发明一种Linux进程间通讯装置的组成示意图,作为本发明的一个具体实施例,如图5所示,一种Linux进程间通讯装置,使用上述Linux进程间通讯方法,包括:轮询模块100,用于轮询消息队列中的消息;解析模块200,用于解析消息队列中的所述消息;判断模块300,用于判断所述消息是否为注册事件的事件信息;查找模块400,用于当判断所述消息为注册事件的事件信息时根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号;执行模块500,用于根据所述进程号唤醒所有监听该注册事件的进程,并根据事件处理函数链表调用每个进程中该注册事件对应的事件处理函数。
本发明提供了一种合理的轻量级的进程间通讯方法及装置,来实现event广播机制以及进程线程退出的监听,吸取传统进程间通讯机制的优点,克服其缺点,保证系统的稳定性、可靠性、移植性,使用简便。
需要说明的是,本系统中各模块之间的信息交互、执行过程等内容与上述Linux进程间通讯方法实施例基于同一构思,具体内容可参见本发明Linux进程间通讯方法实施例中的叙述,此处不再赘述。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种Linux进程间通讯方法,其特征在于,包括步骤:
S11:核心进程轮询消息队列中的消息;
S12:核心进程解析所述消息并判断所述消息是否为注册事件的事件信息;
S13:当判断所述消息为注册事件的事件信息时,根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号;
S14:核心进程根据所述进程号唤醒所有监听该注册事件的进程,并根据事件处理函数链表调用每个进程中该注册事件对应的事件处理函数。
2.如权利要求1所述的Linux进程间通讯方法,其特征在于,所述步骤S1之前还包括步骤:
S01:为每个进程建立所述事件处理函数链表;所述事件处理函数链表包括所述注册事件的事件名及对应的所述事件处理函数;
S02:核心进程建立事件管理链表;所述事件管理链表包括每个注册事件的事件名及所有监听该注册事件的进程号。
3.如权利要求2所述的Linux进程间通讯方法,其特征在于,所述步骤S12中“判断所述消息是否为注册事件的事件信息”具体包括步骤:
S121:判断所述消息的类型是否为event类型;若是,执行步骤S13;否则不作处理。
4.如权利要求3所述的Linux进程间通讯方法,其特征在于,所述步骤S13中“根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号”具体包括:
S131:根据所述事件信息中的事件名查找所述事件管理链表中与所述事件名对应的进程号,获得所有监听所述事件名对应的注册事件的进程号。
5.一种进程退出监听方法,使用上述1-4项任意一项权利要求所述的Linux进程间通讯方法监听进程退出消息,其特征在于,包括步骤:
S21:当有进程退出时,系统执行内核的do_exit函数;
S22:所述do_exit函数调用预设的自定义函数;
S23:预设进程根据所述自定义函数获取退出进程的进程信息,并封装所述进程信息生成进程退出事件信息上传至核心进程的消息队列;
S24:核心进程读取并解析所述消息队列中的所述进程退出事件信息,并根据所述进程退出事件信息获得监听该进程退出事件的进程号;
S25:核心进程根据所述进程号唤醒所有监听该进程退出事件的进程,并根据事件处理函数链表调用每个进程中该进程退出事件对应的事件处理函数。
6.如权利要求所述5的进程退出监听方法,其特征在于,所述步骤S21之前还包括步骤:
S20:在核心进程的所述事件管理链表中建立进程退出事件的事件名及所有监听该注册事件的进程号,注册进程退出事件;同时,在监听所述进程退出事件的所有进程中建立注册所述进程退出事件对应的事件处理函数。
7.如权利要求6所述的进程退出监听方法,其特征在于,所述进程信息包括退出进程的进程号及名称;所述步骤S23“封装所述进程信息,生成进程退出事件信息”具体包括:
S231:将所述退出进程的进程号、名称与该退出进程对应的退出进程事件的事件名封装生成进程退出事件信息。
8.如权利要求7所述的进程退出监听方法,其特征在于,所述步骤S24“核心进程读取并解析所述消息队列中所述进程退出事件信息”具体包括步骤:
S241:核心进程读取所述消息队列中event类型的消息,解析所述event类型的消息获得进程退出事件信息;
所述步骤S24“根据所述进程退出事件信息获得监听该进程退出事件的进程号”具体包括步骤:
S242:根据所述进程退出事件信息获得进程退出事件的事件名;根据所述进程退出事件的事件名查找所述事件管理链表中与所述事件名对应的进程号,获得监听该进程退出事件的进程号。
9.如权利要求5所述的进程退出监听方法,其特征在于,所述步骤S21和步骤S22之间还包括步骤:
S215:将内核中的进程退出函数替换为预设的自定义函数。
10.一种Linux进程间通讯装置,使用上述权利要求1-4任意一项权利要求所述的Linux进程间通讯方法,其特征在于,包括:
轮询模块,用于轮询消息队列中的消息;
解析模块,用于解析消息队列中的所述消息;
判断模块,用于判断所述消息是否为注册事件的事件信息;
查找模块,用于当判断所述消息为注册事件的事件信息时根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号;
执行模块,用于根据所述进程号唤醒所有监听该注册事件的进程,并根据事件处理函数链表调用每个进程中该注册事件对应的事件处理函数。
CN201610645090.9A 2016-08-09 2016-08-09 Linux进程间通讯方法及装置、进程退出监听方法 Active CN106293969B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610645090.9A CN106293969B (zh) 2016-08-09 2016-08-09 Linux进程间通讯方法及装置、进程退出监听方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610645090.9A CN106293969B (zh) 2016-08-09 2016-08-09 Linux进程间通讯方法及装置、进程退出监听方法

Publications (2)

Publication Number Publication Date
CN106293969A true CN106293969A (zh) 2017-01-04
CN106293969B CN106293969B (zh) 2019-09-24

Family

ID=57666519

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610645090.9A Active CN106293969B (zh) 2016-08-09 2016-08-09 Linux进程间通讯方法及装置、进程退出监听方法

Country Status (1)

Country Link
CN (1) CN106293969B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228330A (zh) * 2018-02-06 2018-06-29 北京安博通科技股份有限公司 一种串行化的多进程任务调度方法和装置
CN110852603A (zh) * 2019-11-07 2020-02-28 武汉极意网络科技有限公司 高吞吐量的风控数据处理方法、装置、设备及存储介质
CN111367684A (zh) * 2018-12-26 2020-07-03 北京天融信网络安全技术有限公司 一种过滤远程过程调用的方法和装置
CN112783672A (zh) * 2021-01-27 2021-05-11 传神语联网网络科技股份有限公司 一种远程过程调用处理方法及系统
CN113296967A (zh) * 2020-02-21 2021-08-24 西安诺瓦星云科技股份有限公司 基于嵌入式操作系统的进程管理方法、装置和系统
CN113590362A (zh) * 2021-08-10 2021-11-02 中孚信息股份有限公司 进程间消息处理方法、装置、电子设备及存储介质
CN113779570A (zh) * 2021-09-18 2021-12-10 深信服科技股份有限公司 一种进程监听方法、装置、电子设备及可读存储介质
CN113296967B (zh) * 2020-02-21 2024-06-04 西安诺瓦星云科技股份有限公司 基于嵌入式操作系统的进程管理方法、装置和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591726A (zh) * 2011-12-31 2012-07-18 青岛海信宽带多媒体技术有限公司 一种多进程通信方法
CN103019653A (zh) * 2012-11-27 2013-04-03 康佳集团股份有限公司 一种基于linux系统的内核消息分发方法
CN103838624A (zh) * 2013-12-16 2014-06-04 浪潮电子信息产业股份有限公司 一种基于Linux消息队列的日志处理方法
CN103995751A (zh) * 2014-05-30 2014-08-20 上海斐讯数据通信技术有限公司 一种跨平台通信系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591726A (zh) * 2011-12-31 2012-07-18 青岛海信宽带多媒体技术有限公司 一种多进程通信方法
CN103019653A (zh) * 2012-11-27 2013-04-03 康佳集团股份有限公司 一种基于linux系统的内核消息分发方法
CN103838624A (zh) * 2013-12-16 2014-06-04 浪潮电子信息产业股份有限公司 一种基于Linux消息队列的日志处理方法
CN103995751A (zh) * 2014-05-30 2014-08-20 上海斐讯数据通信技术有限公司 一种跨平台通信系统及方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228330A (zh) * 2018-02-06 2018-06-29 北京安博通科技股份有限公司 一种串行化的多进程任务调度方法和装置
CN111367684A (zh) * 2018-12-26 2020-07-03 北京天融信网络安全技术有限公司 一种过滤远程过程调用的方法和装置
CN111367684B (zh) * 2018-12-26 2023-11-10 北京天融信网络安全技术有限公司 一种过滤远程过程调用的方法和装置
CN110852603A (zh) * 2019-11-07 2020-02-28 武汉极意网络科技有限公司 高吞吐量的风控数据处理方法、装置、设备及存储介质
CN110852603B (zh) * 2019-11-07 2022-07-15 武汉极意网络科技有限公司 高吞吐量的风控数据处理方法、装置、设备及存储介质
CN113296967A (zh) * 2020-02-21 2021-08-24 西安诺瓦星云科技股份有限公司 基于嵌入式操作系统的进程管理方法、装置和系统
CN113296967B (zh) * 2020-02-21 2024-06-04 西安诺瓦星云科技股份有限公司 基于嵌入式操作系统的进程管理方法、装置和系统
CN112783672A (zh) * 2021-01-27 2021-05-11 传神语联网网络科技股份有限公司 一种远程过程调用处理方法及系统
CN112783672B (zh) * 2021-01-27 2024-04-05 传神语联网网络科技股份有限公司 一种远程过程调用处理方法及系统
CN113590362A (zh) * 2021-08-10 2021-11-02 中孚信息股份有限公司 进程间消息处理方法、装置、电子设备及存储介质
CN113779570A (zh) * 2021-09-18 2021-12-10 深信服科技股份有限公司 一种进程监听方法、装置、电子设备及可读存储介质
CN113779570B (zh) * 2021-09-18 2024-02-23 深信服科技股份有限公司 一种基于核心进程的安全防护方法、装置及电子设备

Also Published As

Publication number Publication date
CN106293969B (zh) 2019-09-24

Similar Documents

Publication Publication Date Title
CN106293969A (zh) Linux进程间通讯方法及装置、进程退出监听方法
US11558273B2 (en) Communication between independent containers
Slee et al. Thrift: Scalable cross-language services implementation
US20190034317A1 (en) Debug session management
CN102819452B (zh) 一种从android系统获取数据的方法
CN103262025A (zh) 使用应用空间api的跨环境通信
CN108804238B (zh) 一种基于远程过程调用的软总线通信方法
CN106201672A (zh) 一种定时任务设置系统及其定时任务运行方法
Ghezzi et al. Programming language support to context-aware adaptation: a case-study with Erlang
CN105607904B (zh) 基于Linux平台的通信软件的快速开发框架及其使用方法
CN110309006A (zh) 一种功能调用方法、装置、终端设备及存储介质
CN114363170A (zh) 容器服务网络配置方法及相关产品
CN110933075B (zh) 服务调用方法、装置、电子设备及存储介质
CN108255585A (zh) Sdk异常控制及应用程序运行方法、装置及其设备
US20090300662A1 (en) Mechanism for collocation in a Java virtual machine of JSLEE and Java EE
CN110691131A (zh) 基于智能移动终端的微服务框架系统
CN103491133B (zh) 一种基于Erlang的分布式快速开发系统及方法
Lu et al. Performance characterization and acceleration of big data workloads on OpenPOWER system
Ingram Reconfigurable middleware for high availability sensor systems
CN114741275A (zh) 一种设备调试方法、装置和设备
CN111195919B (zh) 一种机器人示教平台及其架构方法
CN113835904A (zh) 一种远程过程调用控制方法、装置、设备及存储介质
CN109669793B (zh) 中间件进程内对象调用方法
CN109309692B (zh) 一种基于远程控制的多任务离线交互处理系统及被控终端
Sakamoto et al. Dynamically exposing and controlling physical devices by expanding web of things scheme

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