Linux操作系统进程间通信信息的获取方法

文档序号:6337421阅读:371来源:国知局
专利名称:Linux操作系统进程间通信信息的获取方法
技术领域
本发明属于计算机软件领域,尤其涉及Linux操作系统进程间通信信息的获取方法。
背景技术
在协调复杂系统中的多个进程中,进程通信起着至关重要的作用。在进程通信中, 可以采用以下手段管道(Pipe)、信号(Signal)、跟踪(Trace)、命名管道(named pipe)、报 文(Message)、共享内存、信号量(Semaphore)、插口(Socket)。通过所述的通信手段,Linux 各个进程间能够互相协调,保持系统稳定与性能。然而,Linux系统的设计当中能够获取完 整进程的相关信息,却不能通过获取进程间通信信息来完善进程通信。

发明内容
本发明实施例的目的在于提供一种Linux操作系统进程间通信信息的获取方法, 旨在解决不能通过获取进程间通信信息来完善进程通信的问题。本发明实施例是这样实现的,一种Linux操作系统进程间通信信息的获取方法, 其特征在于,所述方法包括以下步骤根据各种进程间通信方式统计进程间通信信息;提供系统接口,获取所述进程间通信信息;将所述获得的进程间通信信息作为进程策略依据进行通信。在本发明实施例中,统计较为完善的进程间通信信息,能够为进程提供相应的策 略依据,避免在有多余选择的前提下,过多进程依赖某一进程从而造成系统不稳定等性能 低下的状况。同时提供安全性设置选项,避免系统的安全性漏洞。


图1是本发明实施例提供的进程通信的方法的流程图;图2是本发明实施例提供的进程间通信信息数据结构示意图;图3是本发明实施例提供的进程间通信信息的权限设置示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。本发明实施例通过在系统进程维护表中设置系统进程间通信信息的数据结构,统 计和获取较为完善的进程间通信信息,为进程提供相应的策略依据。同时提供安全性设置 选项,避免系统安全性漏洞。本发明提供了一种Linux操作系统进程间通信信息的获取方法
所述方法包括根据各种进程间通信方式统计进程间通信信息;提供系统接口,获取所述进程间通信信息;将所述获得的进程间通信信息作为进程策略依据进行通信。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。实施例一图1示出了本发明实施例提供的进程通信的方法的流程图。在步骤SlOl中,根据各种进程间通信方式统计进程间通信信息。在本发明实施例中,所述各种进程间通信方式包括管道(Pipe)、命名管道 (named pipe)、报文(Message)、信号(Signal)、共享内存、信号量(Semaphore)和套接口 (Socket)。所述统计进程间通信信息,即为设计进程间通信信息的数据结构进行统计。如图2所示,下面将详细说明各个通信方式的进程间通信信息数据结构。1、管道。管道机制是由系统调用pipe 0实现的。在forkO配合下,在父子进程 或两个子进程之间建立起进程间的通信管道。下面举例说明在进程间通信信息数据结构中 增加管道的相关结构,如下所示typedef struct {int perm ;/*进程对文件权限,0表示只读,1表示只写,2表示读写*/int pid;/*管道另一端的进程id*/int fid ;/*管道对应的文件id*/}pipeInfo;由上可知,管道的相关结构用在结构体pipehfo表示。2、命名管道。命名管道能在任意进程间建立通信的机制。下面举例说明在进程间 通信信息数据结构中增加命名管道的相关结构的方法,如下所示typedef struct {int perm ;/*进程对文件权限,0表示只读,1表示只写,2表示读写*/int pid;/*命名管道另一端的进程id*/int fid ;/*命名管道对应的文件id*/char*name ;/*命名管道对应的文件名*/InamedPipeInfo ;由上可知,命名管道的相关结构用结构体namedPipelnfo表示。3、信号。信号是软件层次上的一种中断机制模拟,是进程间通信机制中唯一的异 步通信机制。下面举例说明在进程间通信信息数据结构中增加当前处理的中断信号的方 法,如下所示int signal ;/*值与中断向量表定义一致,_1表示无信号*/ ;由上可知,中断信号用一个整型数据signal表示。4、报文。报文避免了信号所承载的信息量小和命名管道开销和无格式字节流等缺 点。其它进程可以通过键值取得对进程已建立的报文队列的访问途径。下面举例说明在进程间通信信息数据结构中,添加报文队列信息的方法,如下所 示
typedef struct{key_t key ;/*报文队列的键值*/int Ien ;/*报文队列的长度*/}messageQueuelnfo ;由上可知,报文队列信息用结构体messageQueuelnfo表示。5、共享内存。共享内存是两个或多个进程可以访问的同一块内存区域,是一种低 级的接近物理层的通信机制。下面举例说明在进程间通信信息数据结构中添加当前的共享 内存的方法,如下所示typedef struct{key_t key ;/*共享内存的键值*/size_t size ;/*共享内存的大小*/} shmlnfo ;由上可知,共享内存用结构体shn^nfo表示。6、信号量。信号量是进程间通信的一种同步手段,通常用来协调对资源的访问。下 面举例说明在进程间通信信息数据结构中,添加信号量标识的方法,如下所示bool ir^emap ;/*当前进程是否在信号量区域*/;由上可知,信号量用一个布尔型的变量ir^emap表示。7、套接口。套接口既适用于同一台计算机上的进程通信,也适用于网络环境下的 进程通信。下面举例说明在进程间通信信息数据结构中,添加当前连接的套接口的方法,如 下所示struct sockaddr_in inet ;由上可知,套接口用结构体sockaddr_in inet表示。最后,需要将上述进程间通信信息合并,如图2所示,其实现方法如下typedef struct {pipelnfo氺pipe ;namedPipelnfo氺namedPipe ;int signal ;messageQueuelnfo氺messageQueue ;shmInfo*shm ;bool inSemap ;struct sockaddr_in inet ;}procComlnfo ;由上可知,将所有通信方式的进程间通信信息都合并在了一个结构体,即 procComlnfo 中。在步骤S102中,提供系统接口,获取所述进程间通信信息。在本发明实施例中,进程间通信信息的获取是由外部进程调用,通过以下API实 现的int getProcCom(pid_t id, procComlnfo氺proc);其中,传入参数pid_t id为目标进程的id,pr0CC0mhf0*pr0C为进程间通信信息智者,返回结果为所获取的信息类型。在步骤S103中,将所述获得的进程间通信信息作为进程策略依据进行通信。在本发明实施例中,进程在通信时,可将所获得的进程间通信信息作为依据进行 通信。例如进程A需要和进程B进行通信,由所获取的进程间通信信息可知,此时的共享 内存太小,因此,进程A和进程B就不会选择共享内存通信,而选择其他的通信方式。这样, 进程在通信时参考所获得的进程间通信信息,可选择更好的进程通信方式,得出最佳的进 程通信方式,提高系统效率。而具体进程是如何进行通信的属于现有技术,在此就不详细描 述了。实施例二 本发明第二实施例进一步提供了设置进程间通信信息的权限的方法。如图3所 示在本发明实施例中,进程间通信信息的权限设置是由主进程所设置的,用来确定 哪些信息能对外可见,哪些信息不能对外可见。提供以下接口实现void setProcCom(unsigned perm);其中,perm的取值及其意义如下0x00所有信息均不可见;0x01管道信息可见;0x02命名管道信息可见;0x04报文信息可见;0x08信号信息可见;0x10共享内存信息可见;0x20信号量信息可见;0x40套接口信息可见;Oxff或0x7f 所有信息可见。在本发明实施例中,可以采用或的方式实现选择性的信息可见,如0x011 0x02表 示管道和命名管道信息可见。在本发明实施例中,进程间通信信息权限的设置,避免了进程间通信信息过于暴 露,提高了系统的安全性。在本发明实施例中,统计较为完善的进程间通信信息,能够为进程提供相应的策 略依据,避免在有多余选择的前提下,过多进程依赖某一进程从而造成系统不稳定等性能 低下的状况。同时提供安全性设置选项,避免系统的安全性漏洞。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种Linux操作系统进程间通信信息的获取方法,其特征在于,所述方法包括下述 步骤a.根据各种进程间通信方式统计进程间通信信息;b.提供系统接口,获取所述进程间通信信息;c.将所述获得的进程间通信信息作为进程策略依据进行通信;其中,步骤a中各种进程间通信方式包括管道(Pipe)、命名管道(namedpipe)、报文 (Message)、信号(Signal)、共享内存、信号量(Semaphore)和套接口(Socket);所述统计进 程间通信信息,即为设计进程间通信信息的数据结构进行统计;步骤b中进程间通信信息的获取是由外部进程调用,通过以下API实现的 int getProcCom(pid_t id, procComlnfo氺proc);其中,传入参数Pid_t id为目标进程的id,procComlnfo^proc为进程间通信信息智 者,返回结果为所获取的信息类型。
2.如权利要求1所述的方法,其特征在于,所述步骤进一步包括管道机制是由系统调用pipe ()实现的;在forkO配合下,在父子进程或两个子进程之 间建立起进程间的通信管道;命名管道能在任意进程间建立通信的机制;信号是软件层次上的一种中断机制模拟,是进程间通信机制中唯一的异步通信机制; 报文避免了信号所承载的信息量小和命名管道开销和无格式字节流等缺点;其它进程 可以通过键值取得对进程已建立的报文队列的访问途径;共享内存是两个或多个进程可以访问的同一块内存区域,是一种低级的接近物理层的 通信机制;信号量是进程间通信的一种同步手段,通常用来协调对资源的访问; 套接口既适用于同一台计算机上的进程通信,也适用于网络环境下的进程通信。
全文摘要
本发明适用于计算机软件领域,提供了一种Linux操作系统进程间通信信息的获取方法。所述方法包括下述步骤根据各种进程间通信方式统计进程间通信信息;提供系统接口,获取所述进程间通信信息;将所述获得的进程间通信信息作为进程策略依据进行通信。在本发明通过统计较为完善的进程间通信信息,能够为进程提供相应的策略依据,避免在有多余选择的前提下,过多进程依赖某一进程从而造成系统不稳定等性能低下的状况。同时提供安全性设置选项,避免系统的安全性漏洞。
文档编号G06F9/54GK102135917SQ20101056937
公开日2011年7月27日 申请日期2010年11月30日 优先权日2010年11月30日
发明者曾巨泉, 朱建宝, 罗笑南, 陈任 申请人:广东星海数字家庭产业技术研究院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1