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

技术编号:6679468 阅读:377 留言:0更新日期:2012-04-11 18:40
本发明专利技术适用于计算机软件领域,提供了一种Linux操作系统进程间通信信息的获取方法。所述方法包括下述步骤:根据各种进程间通信方式统计进程间通信信息;提供系统接口,获取所述进程间通信信息;将所述获得的进程间通信信息作为进程策略依据进行通信。在本发明专利技术通过统计较为完善的进程间通信信息,能够为进程提供相应的策略依据,避免在有多余选择的前提下,过多进程依赖某一进程从而造成系统不稳定等性能低下的状况。同时提供安全性设置选项,避免系统的安全性漏洞。

【技术实现步骤摘要】

本专利技术属于计算机软件领域,尤其涉及。
技术介绍
在协调复杂系统中的多个进程中,进程通信起着至关重要的作用。在进程通信中, 可以采用以下手段管道(Pipe)、信号(Signal)、跟踪(Trace)、命名管道(named pipe)、报 文(Message)、共享内存、信号量(Semaphore)、插口(Socket)。通过所述的通信手段,Linux 各个进程间能够互相协调,保持系统稳定与性能。然而,Linux系统的设计当中能够获取完 整进程的相关信息,却不能通过获取进程间通信信息来完善进程通信。
技术实现思路
本专利技术实施例的目的在于提供一种, 旨在解决不能通过获取进程间通信信息来完善进程通信的问题。本专利技术实施例是这样实现的,一种, 其特征在于,所述方法包括以下步骤根据各种进程间通信方式统计进程间通信信息;提供系统接口,获取所述进程间通信信息;将所述获得的进程间通信信息作为进程策略依据进行通信。在本专利技术实施例中,统计较为完善的进程间通信信息,能够为进程提供相应的策 略依据,避免在有多余选择的前提下,过多进程依赖某一进程从而造成系统不稳定等性能 低下的状况。同时提供安全性设置选项,避免系统的安全性漏洞。附图说明图1是本专利技术实施例提供的进程通信的方法的流程图;图2是本专利技术实施例提供的进程间通信信息数据结构示意图;图3是本专利技术实施例提供的进程间通信信息的权限设置示意图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并 不用于限定本专利技术。本专利技术实施例通过在系统进程维护表中设置系统进程间通信信息的数据结构,统 计和获取较为完善的进程间通信信息,为进程提供相应的策略依据。同时提供安全性设置 选项,避免系统安全性漏洞。本专利技术提供了一种所述方法包括根据各种进程间通信方式统计进程间通信信息;提供系统接口,获取所述进程间通信信息;将所述获得的进程间通信信息作为进程策略依据进行通信。为了说明本专利技术所述的技术方案,下面通过具体实施例来进行说明。实施例一图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就不会选择共享内存通信,而选择其他的通信方式。这样, 进程在通信时参考所获得的进程间通信信息,可选择更好的进程通信方式,得出最本文档来自技高网...

【技术保护点】
1.一种Linux操作系统进程间通信信息的获取方法,其特征在于,所述方法包括下述步骤:a.根据各种进程间通信方式统计进程间通信信息;b.提供系统接口,获取所述进程间通信信息;c.将所述获得的进程间通信信息作为进程策略依据进行通信;其中,步骤a中各种进程间通信方式包括:管道(Pipe)、命名管道(namedpipe)、报文(Message)、信号(Signal)、共享内存、信号量(Semaphore)和套接口(Socket);所述统计进程间通信信息,即为设计进程间通信信息的数据结构进行统计;步骤b中进程间通信信息的获取是由外部进程调用,通过以下API实现的:int getProcCom(pid_t id,procComInfo*proc);其中,传入参数pid_t id为目标进程的id,procComInfo*proc为进程间通信信息智者,返回结果为所获取的信息类型。

【技术特征摘要】

【专利技术属性】
技术研发人员:罗笑南曾巨泉朱建宝陈任
申请(专利权)人:广东星海数字家庭产业技术研究院有限公司
类型:发明
国别省市:81

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1