进程间的通信方法及系统技术方案

技术编号:12356321 阅读:56 留言:0更新日期:2015-11-20 11:40
本发明专利技术提供了一种进程间的通信方法及系统,所述方法包括:第一进程将第一变量和待发送的参数依次存放在预先申请的内存中,其中每个待发送的参数以’\0’作为结尾,所述第一变量用于存储待发送的参数的个数;第一进程将包含第一变量和待发送的参数的第一消息发送给第二进程;第二进程在接收到所述第一消息之后,根据所述第一消息中的第一变量获取第一消息中的参数的个数;第二进程根据所述第一消息中的参数的个数生成指针数组,并利用所述指针数组依次读取第一消息中的所有参数。本发明专利技术解决了现有技术中采用字符数组存储消息而限制消息长度的问题。

【技术实现步骤摘要】

本专利技术涉及计算机
,具体涉及一种进程间的通信方法及系统
技术介绍
Iinux下的用户态进程之间通常会使用消息机制通信。通常为了方便会将消息定义为类似char msg 的字符数组,它表明消息可以包含a个参数,每个参数最大长度是b。当进程收到这样的消息后,可以方便地访问任意一个参数,比如可以通过msg来访问第一个参数,msg来访问第二个参数。但是上述方法人为地限制了每个消息的最大长度,当需要更多更长的消息时,只能修改源代码,将a或者b扩大,这样操作起来非常不方便。
技术实现思路
针对现有技术中的缺陷,本专利技术提供一种进程间的通信方法及系统,解决了现有技术中采用字符数组存储消息而限制消息长度的问题。为解决上述问题,第一方面,本专利技术提供了一种进程间的通信方法,包括:第一进程将第一变量和待发送的参数依次存放在预先申请的内存中,其中每个待发送的参数以’ \0’作为结尾,所述第一变量用于存储待发送的参数的个数;第一进程将包含第一变量和待发送的参数的第一消息发送给第二进程;第二进程在接收到所述第一消息之后,根据所述第一消息中的第一变量获取第一消息中的参数的个数;第二进程根据所述第一消息中的参数的个数生成指针数组,并利用所述指针数组依次读取第一消息中的所有参数。进一步地,在第一进程将第一变量和待发送的参数依次存放在预先申请的内存中之前,所述方法还包括:第一进程根据所述第一变量和待发送的参数申请一块大小为Ml的内存:Ml = sizeof l+strlenl+strlen2+…+strlenN+N ;其中,N为第一消息中的参数的个数,sizeofl为第一变量的数据类型的长度,strlenl为第一个参数的长度,strlen2为第二个参数的长度,strlenN为第N个参数的长度,单位为字节。进一步地,第二进程根据所述第一消息中的参数的个数生成指针数组,并利用所述指针数组依次读取第一消息中的所有参数包括:第二进程根据所述第一消息中的参数的个数生成指针数组,其中所述指针数组的数组元素分别为P ,P ,…,P;利用p读取第一个参数,利用 p = P+strlen(p)+l 读取第 i+1个参数,其中I < i < N,N为第一消息中的参数的个数,strlen(p)为第i个参数的长度;所述数组元素p指向第一消息中第一个参数的起始地址,所述数组元素P指向第一消息中第i个参数的起始地址。进一步地,在第二进程根据所述第一消息中的参数的个数生成指针数组之前,所述方法还包括:第二进程根据所述第一消息中的参数的个数申请一块大小为M2的内存:M2 = sizeof2*N ;其中,sizeof2为一个指针需要的内存大小。进一步地,所述第一变量的数据类型为整型或字符型。第二方面,本专利技术还提供了一种进程间的通信系统,包括第一进程通信装置和第二进程通信装置;所述第一进程通信装置包括存放单元和发送单元;所述第二进程通信装置包括接收单元、获取单元和读取单元;所述存放单元,用于将第一变量和待发送的参数依次存放在预先申请的内存中,其中每个待发送的参数以’ \0’作为结尾,所述第一变量用于存储待发送的参数的个数;所述发送单元,用于将包含第一变量和待发送的参数的第一消息发送给第二进程通信装置;所述接收单元,用于接收第一进程通信装置发送的第一消息;所述获取单元,用于根据所述第一消息中的第一变量获取第一消息中的参数的个数;所述读取单元,用于根据所述第一消息中的参数的个数生成指针数组,并利用所述指针数组依次读取第一消息中的所有参数。 进一步地,所述第一进程通信装置还包括第一申请单元,所述第一申请单元用于根据所述第一变量和待发送的参数申请一块大小为Ml的内存:Ml = sizeof l+strlenl+strlen2+…+strlenN+N ;其中,N为第一消息中的参数的个数,sizeofl为第一变量的数据类型的长度,strlenl为第一个参数的长度,strlen2为第二个参数的长度,strlenN为第N个参数的长度,单位为字节。进一步地,所述读取单元包括生成模块和读取模块;所述生成模块用于根据所述第一消息中的参数的个数生成指针数组,其中所述指针数组的数组元素分别为P ,P ,…,p;所述读取模块用于利用p读取第一个参数,利用p=p+strlen(p)+l读取第i+1个参数,其中I彡i彡N,N为第一消息中的参数的个数,strlen (P )为第i个参数的长度;所述数组元素p指向第一消息中第一个参数的起始地址,所述数组元素P 指向第一消息中第i个参数的起始地址。进一步地,所述第二进程通信装置还包括第二申请单元,所述第二申请单元用于根据所述第一消息中的参数的个数申请一块大小为M2的内存:M2 = sizeof2*N ;其中,sizeof2为一个指针需要的内存大小。进一步地,所述第一变量的数据类型为整型或字符型。由上述技术方案可知,本专利技术所述的进程间的通信方法,首先第一进程在预先申请的内存中依次存放第一变量和待发送的参数,其中所述第一变量用于存储待发送的参数的个数。然后第一进程将包含第一变量和待发送的参数的第一消息发送给第二进程。在第二进程接收到第一消息之后,第二进程通过读取第一变量获得第一进程发送的参数的个数,在此基础之上,第二进程通过设置一个数组长度为参数个数的指针数组来实现访问某一参数。由于本专利技术所述方法只需在第一变量中设置待发送的参数的个数,而不用考虑参数的长度问题。故在参数长度或参数个数发生变化时,采用本专利技术所述的方法,不用修改源代码,只需要在第一变量后面顺序存入参数就可以,因此本专利技术所述方法可以方便地处理可变长度的参数。另外,本专利技术所述方法还可以实现参数的快速访问。【附图说明】为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例一提供的进程间的通信方法的流程图;图2是本专利技术实施例二提供的进程间的通信系统的结构示意图。【具体实施方式】为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例当前第1页1 2 3 本文档来自技高网...

【技术保护点】
一种进程间的通信方法,其特征在于,包括:第一进程将第一变量和待发送的参数依次存放在预先申请的内存中,其中每个待发送的参数以’\0’作为结尾,所述第一变量用于存储待发送的参数的个数;所述第一进程将包含第一变量和待发送的参数的第一消息发送给第二进程;所述第二进程在接收到所述第一消息之后,根据所述第一消息中的第一变量获取第一消息中的参数的个数;所述第二进程根据所述第一消息中的参数的个数生成指针数组,并利用所述指针数组依次读取第一消息中的所有参数。

【技术特征摘要】

【专利技术属性】
技术研发人员:李鹏
申请(专利权)人:汉柏科技有限公司
类型:发明
国别省市:天津;12

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

1