技术特征:
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进程间通讯方法,其特征在于,包括:
轮询模块,用于轮询消息队列中的消息;
解析模块,用于解析消息队列中的所述消息;
判断模块,用于判断所述消息是否为注册事件的事件信息;
查找模块,用于当判断所述消息为注册事件的事件信息时根据所述事件信息查找事件管理链表,获得所有监听该注册事件的进程号;
执行模块,用于根据所述进程号唤醒所有监听该注册事件的进程,并根据事件处理函数链表调用每个进程中该注册事件对应的事件处理函数。