[发明专利]进程间的通信方法及系统在审
| 申请号: | 201510466483.9 | 申请日: | 2015-07-30 |
| 公开(公告)号: | CN105068878A | 公开(公告)日: | 2015-11-18 |
| 发明(设计)人: | 李鹏 | 申请(专利权)人: | 汉柏科技有限公司 |
| 主分类号: | G06F9/54 | 分类号: | G06F9/54 |
| 代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李相雨 |
| 地址: | 300384 天津市滨海新*** | 国省代码: | 天津;12 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 进程 通信 方法 系统 | ||
技术领域
本发明涉及计算机技术领域,具体涉及一种进程间的通信方法及系统。
背景技术
linux下的用户态进程之间通常会使用消息机制通信。通常为了方便会将消息定义为类似charmsg[a][b]的字符数组,它表明消息可以包含a个参数,每个参数最大长度是b。当进程收到这样的消息后,可以方便地访问任意一个参数,比如可以通过msg[0]来访问第一个参数,msg[1]来访问第二个参数。
但是上述方法人为地限制了每个消息的最大长度,当需要更多更长的消息时,只能修改源代码,将a或者b扩大,这样操作起来非常不方便。
发明内容
针对现有技术中的缺陷,本发明提供一种进程间的通信方法及系统,解决了现有技术中采用字符数组存储消息而限制消息长度的问题。
为解决上述问题,第一方面,本发明提供了一种进程间的通信方法,包括:
第一进程将第一变量和待发送的参数依次存放在预先申请的内存中,其中每个待发送的参数以’/0’作为结尾,所述第一变量用于存储待发送的参数的个数;
第一进程将包含第一变量和待发送的参数的第一消息发送给第二进程;
第二进程在接收到所述第一消息之后,根据所述第一消息中的第一变量获取第一消息中的参数的个数;
第二进程根据所述第一消息中的参数的个数生成指针数组,并利用所述指针数组依次读取第一消息中的所有参数。
进一步地,在第一进程将第一变量和待发送的参数依次存放在预先申请的内存中之前,所述方法还包括:
第一进程根据所述第一变量和待发送的参数申请一块大小为M1的内存:
M1=sizeof1+strlen1+strlen2+…+strlenN+N;
其中,N为第一消息中的参数的个数,sizeof1为第一变量的数据类型的长度,strlen1为第一个参数的长度,strlen2为第二个参数的长度,strlenN为第N个参数的长度,单位为字节。
进一步地,第二进程根据所述第一消息中的参数的个数生成指针数组,并利用所述指针数组依次读取第一消息中的所有参数包括:
第二进程根据所述第一消息中的参数的个数生成指针数组,其中所述指针数组的数组元素分别为p[0],p[1],…,p[N-1];
利用p[0]读取第一个参数,利用p[i]=p[i-1]+strlen(p[i-1])+1读取第i+1个参数,其中1≤i≤N,N为第一消息中的参数的个数,strlen(p[i-1])为第i个参数的长度;
所述数组元素p[0]指向第一消息中第一个参数的起始地址,所述数组元素p[i-1]指向第一消息中第i个参数的起始地址。
进一步地,在第二进程根据所述第一消息中的参数的个数生成指针数组之前,所述方法还包括:
第二进程根据所述第一消息中的参数的个数申请一块大小为M2的内存:
M2=sizeof2*N;
其中,sizeof2为一个指针需要的内存大小。
进一步地,所述第一变量的数据类型为整型或字符型。
第二方面,本发明还提供了一种进程间的通信系统,包括第一进程通信装置和第二进程通信装置;
所述第一进程通信装置包括存放单元和发送单元;
所述第二进程通信装置包括接收单元、获取单元和读取单元;
所述存放单元,用于将第一变量和待发送的参数依次存放在预先申请的内存中,其中每个待发送的参数以’/0’作为结尾,所述第一变量用于存储待发送的参数的个数;
所述发送单元,用于将包含第一变量和待发送的参数的第一消息发送给第二进程通信装置;
所述接收单元,用于接收第一进程通信装置发送的第一消息;
所述获取单元,用于根据所述第一消息中的第一变量获取第一消息中的参数的个数;
所述读取单元,用于根据所述第一消息中的参数的个数生成指针数组,并利用所述指针数组依次读取第一消息中的所有参数。
进一步地,所述第一进程通信装置还包括第一申请单元,所述第一申请单元用于根据所述第一变量和待发送的参数申请一块大小为M1的内存:
M1=sizeof1+strlen1+strlen2+…+strlenN+N;
其中,N为第一消息中的参数的个数,sizeof1为第一变量的数据类型的长度,strlen1为第一个参数的长度,strlen2为第二个参数的长度,strlenN为第N个参数的长度,单位为字节。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汉柏科技有限公司,未经汉柏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510466483.9/2.html,转载请声明来源钻瓜专利网。





