CN102135917A - Linux操作系统进程间通信信息的获取方法 - Google Patents
Linux操作系统进程间通信信息的获取方法 Download PDFInfo
- Publication number
- CN102135917A CN102135917A CN2010105693751A CN201010569375A CN102135917A CN 102135917 A CN102135917 A CN 102135917A CN 2010105693751 A CN2010105693751 A CN 2010105693751A CN 201010569375 A CN201010569375 A CN 201010569375A CN 102135917 A CN102135917 A CN 102135917A
- Authority
- CN
- China
- Prior art keywords
- communication information
- interprocess communication
- inter
- information
- interprocess
- 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.)
- Pending
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明适用于计算机软件领域,提供了一种Linux操作系统进程间通信信息的获取方法。所述方法包括下述步骤:根据各种进程间通信方式统计进程间通信信息;提供系统接口,获取所述进程间通信信息;将所述获得的进程间通信信息作为进程策略依据进行通信。在本发明通过统计较为完善的进程间通信信息,能够为进程提供相应的策略依据,避免在有多余选择的前提下,过多进程依赖某一进程从而造成系统不稳定等性能低下的状况。同时提供安全性设置选项,避免系统的安全性漏洞。
Description
技术领域
本发明属于计算机软件领域,尤其涉及Linux操作系统进程间通信信息的获取方法。
背景技术
在协调复杂系统中的多个进程中,进程通信起着至关重要的作用。在进程通信中,可以采用以下手段:管道(Pipe)、信号(Signal)、跟踪(Trace)、命名管道(named pipe)、报文(Message)、共享内存、信号量(Semaphore)、插口(Socket)。通过所述的通信手段,Linux各个进程间能够互相协调,保持系统稳定与性能。然而,Linux系统的设计当中能够获取完整进程的相关信息,却不能通过获取进程间通信信息来完善进程通信。
发明内容
本发明实施例的目的在于提供一种Linux操作系统进程间通信信息的获取方法,旨在解决不能通过获取进程间通信信息来完善进程通信的问题。
本发明实施例是这样实现的,一种Linux操作系统进程间通信信息的获取方法,其特征在于,所述方法包括以下步骤:
根据各种进程间通信方式统计进程间通信信息;
提供系统接口,获取所述进程间通信信息;
将所述获得的进程间通信信息作为进程策略依据进行通信。
在本发明实施例中,统计较为完善的进程间通信信息,能够为进程提供相应的策略依据,避免在有多余选择的前提下,过多进程依赖某一进程从而造成系统不稳定等性能低下的状况。同时提供安全性设置选项,避免系统的安全性漏洞。
附图说明
图1是本发明实施例提供的进程通信的方法的流程图;
图2是本发明实施例提供的进程间通信信息数据结构示意图;
图3是本发明实施例提供的进程间通信信息的权限设置示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例通过在系统进程维护表中设置系统进程间通信信息的数据结构,统计和获取较为完善的进程间通信信息,为进程提供相应的策略依据。同时提供安全性设置选项,避免系统安全性漏洞。
本发明提供了一种Linux操作系统进程间通信信息的获取方法:
所述方法包括:
根据各种进程间通信方式统计进程间通信信息;
提供系统接口,获取所述进程间通信信息;
将所述获得的进程间通信信息作为进程策略依据进行通信。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明实施例提供的进程通信的方法的流程图。
在步骤S101中,根据各种进程间通信方式统计进程间通信信息。
在本发明实施例中,所述各种进程间通信方式包括:管道(Pipe)、命名管道(named pipe)、报文(Message)、信号(Signal)、共享内存、信号量(Semaphore)和套接口(Socket)。所述统计进程间通信信息,即为设计进程间通信信息的数据结构进行统计。
如图2所示,下面将详细说明各个通信方式的进程间通信信息数据结构。
1、管道。管道机制是由系统调用pipe()实现的。在fork()配合下,在父子进程或两个子进程之间建立起进程间的通信管道。下面举例说明在进程间通信信息数据结构中增加管道的相关结构,如下所示:
typedef struct{
int perm;/*进程对文件权限,0表示只读,1表示只写,2表示读写*/
int pid;/*管道另一端的进程id*/
int fid;/*管道对应的文件id*/
}pipeInfo;
由上可知,管道的相关结构用在结构体pipeInfo表示。
2、命名管道。命名管道能在任意进程间建立通信的机制。下面举例说明在进程间通信信息数据结构中增加命名管道的相关结构的方法,如下所示:
typedef struct{
int perm;/*进程对文件权限,0表示只读,1表示只写,2表示读写*/
int pid;/*命名管道另一端的进程id*/
int fid;/*命名管道对应的文件id*/
char*name;/*命名管道对应的文件名*/
}namedPipeInfo;
由上可知,命名管道的相关结构用结构体namedPipeInfo表示。
3、信号。信号是软件层次上的一种中断机制模拟,是进程间通信机制中唯一的异步通信机制。下面举例说明在进程间通信信息数据结构中增加当前处理的中断信号的方法,如下所示:
int signal;/*值与中断向量表定义一致,-1表示无信号*/;
由上可知,中断信号用一个整型数据signal表示。
4、报文。报文避免了信号所承载的信息量小和命名管道开销和无格式字节流等缺点。其它进程可以通过键值取得对进程已建立的报文队列的访问途径。
下面举例说明在进程间通信信息数据结构中,添加报文队列信息的方法,如下所示:
typedef struct{
key_t key;/*报文队列的键值*/
int len;/*报文队列的长度*/
}messageQueueInfo;
由上可知,报文队列信息用结构体messageQueueInfo表示。
5、共享内存。共享内存是两个或多个进程可以访问的同一块内存区域,是一种低级的接近物理层的通信机制。下面举例说明在进程间通信信息数据结构中添加当前的共享内存的方法,如下所示:
typedef struct{
key_t key;/*共享内存的键值*/
size_t size;/*共享内存的大小*/
}shmInfo;
由上可知,共享内存用结构体shmInfo表示。
6、信号量。信号量是进程间通信的一种同步手段,通常用来协调对资源的访问。下面举例说明在进程间通信信息数据结构中,添加信号量标识的方法,如下所示:
bool inSemap;/*当前进程是否在信号量区域*/;
由上可知,信号量用一个布尔型的变量inSemap表示。
7、套接口。套接口既适用于同一台计算机上的进程通信,也适用于网络环境下的进程通信。下面举例说明在进程间通信信息数据结构中,添加当前连接的套接口的方法,如下所示:
struct sockaddr_in inet;
由上可知,套接口用结构体sockaddr_in inet表示。
最后,需要将上述进程间通信信息合并,如图2所示,其实现方法如下:
typedef struct{
pipeInfo*pipe;
namedPipeInfo*namedPipe;
int signal;
messageQueueInfo*messageQueue;
shmInfo*shm;
bool inSemap;
struct sockaddr_in inet;
}procComInfo;
由上可知,将所有通信方式的进程间通信信息都合并在了一个结构体,即procComInfo中。
在步骤S102中,提供系统接口,获取所述进程间通信信息。
在本发明实施例中,进程间通信信息的获取是由外部进程调用,通过以下API实现的:
int getProcCom(pid_t id,procComInfo*proc);
其中,传入参数pid_t id为目标进程的id,procComInfo*proc为进程间通信信息智者,返回结果为所获取的信息类型。
在步骤S103中,将所述获得的进程间通信信息作为进程策略依据进行通信。
在本发明实施例中,进程在通信时,可将所获得的进程间通信信息作为依据进行通信。例如:进程A需要和进程B进行通信,由所获取的进程间通信信息可知,此时的共享内存太小,因此,进程A和进程B就不会选择共享内存通信,而选择其他的通信方式。这样,进程在通信时参考所获得的进程间通信信息,可选择更好的进程通信方式,得出最佳的进程通信方式,提高系统效率。而具体进程是如何进行通信的属于现有技术,在此就不详细描述了。
实施例二:
本发明第二实施例进一步提供了设置进程间通信信息的权限的方法。如图3所示:
在本发明实施例中,进程间通信信息的权限设置是由主进程所设置的,用来确定哪些信息能对外可见,哪些信息不能对外可见。提供以下接口实现:
void setProcCom(unsigned perm);
其中,perm的取值及其意义如下:
0x00所有信息均不可见;
0x01管道信息可见;
0x02命名管道信息可见;
0x04报文信息可见;
0x08信号信息可见;
0x10共享内存信息可见;
0x20信号量信息可见;
0x40套接口信息可见;
0xff或0x7f 所有信息可见。
在本发明实施例中,可以采用或的方式实现选择性的信息可见,如0x01|0x02表示管道和命名管道信息可见。
在本发明实施例中,进程间通信信息权限的设置,避免了进程间通信信息过于暴露,提高了系统的安全性。
在本发明实施例中,统计较为完善的进程间通信信息,能够为进程提供相应的策略依据,避免在有多余选择的前提下,过多进程依赖某一进程从而造成系统不稳定等性能低下的状况。同时提供安全性设置选项,避免系统的安全性漏洞。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (2)
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为进程间通信信息智者,返回结果为所获取的信息类型。
2.如权利要求1所述的方法,其特征在于,所述步骤进一步包括:
管道机制是由系统调用pipe()实现的;在fork()配合下,在父子进程或两个子进程之间建立起进程间的通信管道;
命名管道能在任意进程间建立通信的机制;
信号是软件层次上的一种中断机制模拟,是进程间通信机制中唯一的异步通信机制;
报文避免了信号所承载的信息量小和命名管道开销和无格式字节流等缺点;其它进程可以通过键值取得对进程已建立的报文队列的访问途径;
共享内存是两个或多个进程可以访问的同一块内存区域,是一种低级的接近物理层的通信机制;
信号量是进程间通信的一种同步手段,通常用来协调对资源的访问;
套接口既适用于同一台计算机上的进程通信,也适用于网络环境下的进程通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105693751A CN102135917A (zh) | 2010-11-30 | 2010-11-30 | Linux操作系统进程间通信信息的获取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105693751A CN102135917A (zh) | 2010-11-30 | 2010-11-30 | Linux操作系统进程间通信信息的获取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102135917A true CN102135917A (zh) | 2011-07-27 |
Family
ID=44295707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105693751A Pending CN102135917A (zh) | 2010-11-30 | 2010-11-30 | Linux操作系统进程间通信信息的获取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102135917A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412739A (zh) * | 2013-08-28 | 2013-11-27 | 电子科技大学 | 一种基于地震数据处理的数据传输方法及系统 |
CN107133109A (zh) * | 2017-04-24 | 2017-09-05 | 京信通信系统(广州)有限公司 | 一种模块间通信的方法、装置及计算设备 |
CN107665148A (zh) * | 2016-07-28 | 2018-02-06 | 中国科学院声学研究所 | 一种基于Chromium的命名管道进程通信方法 |
CN110795323A (zh) * | 2019-10-29 | 2020-02-14 | Oppo广东移动通信有限公司 | 负载统计方法、装置、存储介质及电子设备 |
CN112181670A (zh) * | 2019-07-02 | 2021-01-05 | 西安诺瓦星云科技股份有限公司 | 进程间通讯方法及装置和Linux设备 |
CN112241329A (zh) * | 2020-09-28 | 2021-01-19 | 深圳市商汤科技有限公司 | 识别引擎的监控方法、装置、设备及存储介质 |
CN117896182A (zh) * | 2024-03-14 | 2024-04-16 | 麒麟软件有限公司 | Linux网络通信安全管控方法、装置及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101963924A (zh) * | 2010-10-21 | 2011-02-02 | 深圳创维-Rgb电子有限公司 | 一种进程通信方法、装置及操作系统 |
-
2010
- 2010-11-30 CN CN2010105693751A patent/CN102135917A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101963924A (zh) * | 2010-10-21 | 2011-02-02 | 深圳创维-Rgb电子有限公司 | 一种进程通信方法、装置及操作系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412739A (zh) * | 2013-08-28 | 2013-11-27 | 电子科技大学 | 一种基于地震数据处理的数据传输方法及系统 |
CN107665148A (zh) * | 2016-07-28 | 2018-02-06 | 中国科学院声学研究所 | 一种基于Chromium的命名管道进程通信方法 |
CN107665148B (zh) * | 2016-07-28 | 2020-06-16 | 中国科学院声学研究所 | 一种基于Chromium的命名管道进程通信方法 |
CN107133109A (zh) * | 2017-04-24 | 2017-09-05 | 京信通信系统(广州)有限公司 | 一种模块间通信的方法、装置及计算设备 |
CN107133109B (zh) * | 2017-04-24 | 2020-01-14 | 京信通信系统(中国)有限公司 | 一种模块间通信的方法、装置及计算设备 |
CN112181670A (zh) * | 2019-07-02 | 2021-01-05 | 西安诺瓦星云科技股份有限公司 | 进程间通讯方法及装置和Linux设备 |
CN112181670B (zh) * | 2019-07-02 | 2023-04-11 | 西安诺瓦星云科技股份有限公司 | 进程间通讯方法及装置和Linux设备 |
CN110795323A (zh) * | 2019-10-29 | 2020-02-14 | Oppo广东移动通信有限公司 | 负载统计方法、装置、存储介质及电子设备 |
CN112241329A (zh) * | 2020-09-28 | 2021-01-19 | 深圳市商汤科技有限公司 | 识别引擎的监控方法、装置、设备及存储介质 |
CN117896182A (zh) * | 2024-03-14 | 2024-04-16 | 麒麟软件有限公司 | Linux网络通信安全管控方法、装置及存储介质 |
CN117896182B (zh) * | 2024-03-14 | 2024-06-07 | 麒麟软件有限公司 | Linux网络通信安全管控方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102135917A (zh) | Linux操作系统进程间通信信息的获取方法 | |
WO2018205730A1 (zh) | 在区块链中获得智能合约接口的方法和设备 | |
US10078498B2 (en) | Method, apparatus, system, and non-transitory computer readable medium for extending at least one function of a package file | |
JP5758995B2 (ja) | 仮想マシン間で分析の結果を共有するためのシステム、方法及びコンピュータ可読記憶媒体 | |
WO2022022700A1 (zh) | 应用图标显示方法、装置及电子设备 | |
CN106201566A (zh) | 利博伟特软件热升级方法及设备 | |
KR20080112322A (ko) | Bios 구성 기술을 위한 컴퓨터 판독가능 매체 및 시스템 | |
WO2009100156A1 (en) | Automatic connections between application components | |
CN102841780B (zh) | 一种创建并调用通用组件的方法及设备 | |
TW200405982A (en) | Image-based software installation | |
CN101963924B (zh) | 一种进程通信方法、装置及操作系统 | |
CN109726067A (zh) | 一种进程监控方法以及客户端设备 | |
CN105515933A (zh) | 基于OpenStack实现VMware网络功能的管理方法 | |
US8578368B2 (en) | Injecting a file from the bios into an operating system | |
CN106293967A (zh) | 一种远程注入代码的方法及系统 | |
US9117013B2 (en) | Combining monitoring techniques | |
CN102144226B (zh) | 灵活的基类库 | |
US20110087458A1 (en) | Processing transaction timestamps | |
US10375206B1 (en) | Entity-component architecture with components having multiple configurations | |
CN103473116A (zh) | 一种大数据量数据远程调用方法及装置 | |
Zhang et al. | A webpage offloading framework for smart devices | |
CN111338583B (zh) | 一种高频数据存储方法、装置、计算机 | |
Halvorsen et al. | OS X and iOS kernel programming | |
CN103309681B (zh) | 一种开放平台客户端软件操作方法及其装置 | |
CN111111197A (zh) | 一种基于DirectX平台的游戏引擎数据处理系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110727 |