CN103064748A - 一种Linux下处理多进程间通讯的方法 - Google Patents
一种Linux下处理多进程间通讯的方法 Download PDFInfo
- Publication number
- CN103064748A CN103064748A CN2013100017154A CN201310001715A CN103064748A CN 103064748 A CN103064748 A CN 103064748A CN 2013100017154 A CN2013100017154 A CN 2013100017154A CN 201310001715 A CN201310001715 A CN 201310001715A CN 103064748 A CN103064748 A CN 103064748A
- Authority
- CN
- China
- Prior art keywords
- data
- value
- flag
- shared drive
- reads
- 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
- Multi Processors (AREA)
Abstract
本发明公开了一种Linux下处理多进程间通讯的方法,属于计算机应用技术领域,Linux系统下,应用程序的进程通过共享内存的方式进行数据交互;应用程序开辟一段内存,定为共享内存,在共享内存内确定一个内存位置为读写数据标识位,读写数据标识位确定一个初始值,应用程序的进程通过读取读写数据标识位的数值,来确定是否可以对共享内存进行操作;读写数据标识位为初始值时应用程序的进程才可以对共享内存进行读或写的数据操作;每个进程读取共享内存的数据时,读写数据标识位的值为此进程的特定值。本发明的一种Linux下处理多进程间通讯的方法和现有技术相比,具有节约内存资源、通讯方便等特点。
Description
技术领域
本发明涉及一种计算机应用技术领域,具体地说是一种Linux下处理多进程间通讯的方法。
背景技术
随着计算机和通讯技术的不断发展,计算机与通讯线路及设备结合起来实现人与计算机、计算机与计算机之间的通讯,不仅使各用户计算机的利用率大大提高,而且极大地扩展了计算机的应用范围,并使各用户实现计算机软硬件资源与数据资源的共享。
在Linux系统下,进程间通讯传统的方法包括:管道、消息队列、共享内存、信号量、套接字等,其中共享内存的方式被广泛应用。共享内存的方式为:当应用程序的进程为多个时,为每两个进程开辟一个内存段作为共享内存空间,这样每两个进程就需要开辟一个内存段,导致多进程通讯需要非常大的内存空间,存在浪费资源的情况;尤其是在一些较小的应用设备上,因为资源有限,所以在应用程序支持上,会显得捉襟见肘。所以此时应该合理利用有效的资源,此时需要一种节约资源和通讯方便的进程间通讯的方法。
发明内容
本发明的技术任务是提供一种节约内存资源、通讯方便的一种Linux下处理多进程间通讯的方法。
本发明的技术任务是按以下方式实现的,Linux系统下,应用程序的进程进行数据交互,这些应用程序的进程通过共享内存的方式进行数据交互;具体方法为:应用程序开辟一段内存,定为共享内存,在共享内存内确定一个内存位置为读写数据标识位,读写数据标识位确定一个初始值,应用程序的进程通过读取读写数据标识位的数值,来确定是否可以对共享内存进行操作;读写数据标识位为初始值时应用程序的进程才可以对共享内存进行读或写的数据操作;每个进程读取共享内存的数据时,读写数据标识位的值为此进程的特定值。
应用程序的进程都在定时的读取读写数据标识位的值;当进程A有数据需要给进程B时,首先判断读写数据标识位的值是否为初始值,若读写数据标识位的值为初始值时,修改读写数据标识位的值置为锁状态,进程A将数据写入共享内存,数据写到共享内存后,将读写数据标识位的值置为进程B的可读数据的特定值,进程B发现读写数据标识位的值为自己读取数据的特定值时,将通过共享内存读取上述进程A写入的数据,进程B数据读取完毕后,将读写数据标识位的值置为初始值,供其他进程使用。
当进程A写数据到共享内存后,进程B通过共享内存获取进程A写入的数据,读写数据标识位的值为标识进程A与进程B在进行数据交互的特定值;同时又有进程C需要将数据给予进程B时,此时需要等进程B获取到进程A的数据后,将读写数据标识位为初始值后,进程C才可以对共享内存进行操作,进程C在共享内存写数据后,进程B通过共享内存获取进程C写入的数据,读写数据标识位的值为标识进程C与进程B在进行数据交互的特定值;多进程进行通讯时,通过读写数据标识位不同的特定值来确定是哪两个进程进行数据交互。
共享内存的数据空间为应用程序的进程间单次交互最大的数据量。
本发明的一种Linux下处理多进程间通讯的方法具有以下优点:
设计合理、结构简单、 易于加工、体积小、使用方便、一物多用等特点,因而,具有很好的推广使用价值。
附图说明
下面结合附图对本发明进一步说明。
附图1为一种Linux下处理多进程间通讯的方法的进程间进行数据交互的流程框图。
具体实施方式
参照说明书附图和具体实施例对本发明的一种Linux下处理多进程间通讯的方法作以下详细地说明。
实施例:
本发明的一种Linux下处理多进程间通讯的方法,Linux系统下,应用程序的进程进行数据交互,这些应用程序的进程通过共享内存的方式进行数据交互;具体方法为:应用程序开辟一段内存,定为共享内存,在共享内存内确定一个内存位置为读写数据标识位,读写数据标识位确定一个初始值,应用程序的进程通过读取读写数据标识位的数值,来确定是否可以对共享内存进行操作;读写数据标识位为初始值时应用程序的进程才可以对共享内存进行读或写的数据操作;每个进程读取共享内存的数据时,读写数据标识位的值为此进程的特定值。
如图1所示,应用程序的进程都在定时的读取读写数据标识位的值;当进程A有数据需要给进程B时,首先判断读写数据标识位的值是否为初始值,若读写数据标识位的值为初始值时,修改读写数据标识位的值置为锁状态,进程A将数据写入共享内存,数据写到共享内存后,将读写数据标识位的值置为进程B的可读数据的特定值,进程B发现读写数据标识位的值为自己读取数据的特定值时,将通过共享内存读取上述进程A写入的数据,进程B数据读取完毕后,将读写数据标识位的值置为初始值,供其他进程使用。
当进程A写数据到共享内存后,进程B通过共享内存获取进程A写入的数据,读写数据标识位的值为标识进程A与进程B在进行数据交互的特定值;同时又有进程C需要将数据给予进程B时,此时需要等进程B获取到进程A的数据后,将读写数据标识位为初始值后,进程C才可以对共享内存进行操作,进程C在共享内存写数据后,进程B通过共享内存获取进程C写入的数据,读写数据标识位的值为标识进程C与进程B在进行数据交互的特定值;多进程进行通讯时,通过读写数据标识位不同的特定值来确定是哪两个进程进行数据交互。
共享内存的数据空间为应用程序的进程间单次交互最大的数据量。
本发明的一种Linux下处理多进程间通讯的方法,除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (4)
1.一种Linux下处理多进程间通讯的方法,其特征在于Linux系统下,应用程序的进程进行数据交互,这些应用程序的进程通过共享内存的方式进行数据交互;具体方法为:应用程序开辟一段内存,定为共享内存,在共享内存内确定一个内存位置为读写数据标识位,读写数据标识位确定一个初始值,应用程序的进程通过读取读写数据标识位的数值,来确定是否可以对共享内存进行操作;读写数据标识位为初始值时应用程序的进程才可以对共享内存进行读或写的数据操作;每个进程读取共享内存的数据时,读写数据标识位的值为此进程的特定值。
2.根据权利要求1所述的一种Linux下处理多进程间通讯的方法,其特征在于应用程序的进程都在定时的读取读写数据标识位的值;当进程A有数据需要给进程B时,首先判断读写数据标识位的值是否为初始值,若读写数据标识位的值为初始值时,修改读写数据标识位的值置为锁状态,进程A将数据写入共享内存,数据写到共享内存后,将读写数据标识位的值置为进程B的可读数据的特定值,进程B发现读写数据标识位的值为自己读取数据的特定值时,将通过共享内存读取上述进程A写入的数据,进程B数据读取完毕后,将读写数据标识位的值置为初始值,供其他进程使用。
3.根据权利要求1或2所述的一种Linux下处理多进程间通讯的方法,其特征在于当进程A写数据到共享内存后,进程B通过共享内存获取进程A写入的数据,读写数据标识位的值为标识进程A与进程B在进行数据交互的特定值;同时又有进程C需要将数据给予进程B时,此时需要等进程B获取到进程A的数据后,将读写数据标识位为初始值后,进程C才可以对共享内存进行操作,进程C在共享内存写数据后,进程B通过共享内存获取进程C写入的数据,读写数据标识位的值为标识进程C与进程B在进行数据交互的特定值;多进程进行通讯时,通过读写数据标识位不同的特定值来确定是哪两个进程进行数据交互。
4.根据权利要求1所述的一种Linux下处理多进程间通讯的方法,其特征在于共享内存的数据空间为应用程序的进程间单次交互最大的数据量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100017154A CN103064748A (zh) | 2013-01-05 | 2013-01-05 | 一种Linux下处理多进程间通讯的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100017154A CN103064748A (zh) | 2013-01-05 | 2013-01-05 | 一种Linux下处理多进程间通讯的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103064748A true CN103064748A (zh) | 2013-04-24 |
Family
ID=48107381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013100017154A Pending CN103064748A (zh) | 2013-01-05 | 2013-01-05 | 一种Linux下处理多进程间通讯的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103064748A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391662A (zh) * | 2014-12-12 | 2015-03-04 | 北京奇虎科技有限公司 | 一种数据读写方法及装置 |
CN104850462A (zh) * | 2015-05-04 | 2015-08-19 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN105183570A (zh) * | 2015-09-22 | 2015-12-23 | 上海斐讯数据通信技术有限公司 | 向核心进程发送大量qinq配置数据的系统及其方法 |
WO2016082594A1 (zh) * | 2014-11-26 | 2016-06-02 | 中兴通讯股份有限公司 | 数据更新处理方法及装置 |
CN103731328B (zh) * | 2014-01-02 | 2016-09-07 | 烽火通信科技股份有限公司 | 基于Linux共享内存实现家庭网关数据通信的系统及方法 |
CN105955802A (zh) * | 2016-04-21 | 2016-09-21 | 青岛海信移动通信技术股份有限公司 | 一种移动终端的应用运行方法及移动终端 |
CN106598756A (zh) * | 2016-12-13 | 2017-04-26 | 重庆川仪自动化股份有限公司 | 不同应用程序之间的数据交互方法 |
CN106708631A (zh) * | 2016-11-30 | 2017-05-24 | 福建省天奕网络科技有限公司 | 共享内存属性修改方法及其系统 |
CN108446182A (zh) * | 2018-02-07 | 2018-08-24 | 链家网(北京)科技有限公司 | 一种基于共享内存的跨进程通信方法及装置 |
CN109002364A (zh) * | 2018-06-29 | 2018-12-14 | Oppo(重庆)智能科技有限公司 | 进程间通信的优化方法、电子装置以及可读存储介质 |
CN113486958A (zh) * | 2021-07-07 | 2021-10-08 | 湖北昊鑫自动化设备科技有限公司 | 一种锯链缺陷检测方法、存储介质及系统 |
CN117077115A (zh) * | 2023-10-13 | 2023-11-17 | 沐曦集成电路(上海)有限公司 | 芯片验证阶段跨语言多进程交互方法、电子设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117531A1 (en) * | 2000-12-19 | 2004-06-17 | Mckenney Paul E. | Adaptive reader-writer lock |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
US20060150195A1 (en) * | 2003-06-30 | 2006-07-06 | Microsoft Corporation | System and method for interprocess communication |
CN101551808A (zh) * | 2009-05-13 | 2009-10-07 | 山东中创软件商用中间件股份有限公司 | 支持多进程的嵌入式的树型数据库技术 |
-
2013
- 2013-01-05 CN CN2013100017154A patent/CN103064748A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117531A1 (en) * | 2000-12-19 | 2004-06-17 | Mckenney Paul E. | Adaptive reader-writer lock |
US20060150195A1 (en) * | 2003-06-30 | 2006-07-06 | Microsoft Corporation | System and method for interprocess communication |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN101551808A (zh) * | 2009-05-13 | 2009-10-07 | 山东中创软件商用中间件股份有限公司 | 支持多进程的嵌入式的树型数据库技术 |
Non-Patent Citations (2)
Title |
---|
翁小东: "电信级应用系统中多进程共享内存池的实现", 《电脑知识与技术》 * |
谢子光: "多核处理器核间通信技术研究", 《中国优秀硕士论文全文数据库 信息科技辑》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731328B (zh) * | 2014-01-02 | 2016-09-07 | 烽火通信科技股份有限公司 | 基于Linux共享内存实现家庭网关数据通信的系统及方法 |
WO2016082594A1 (zh) * | 2014-11-26 | 2016-06-02 | 中兴通讯股份有限公司 | 数据更新处理方法及装置 |
CN104391662A (zh) * | 2014-12-12 | 2015-03-04 | 北京奇虎科技有限公司 | 一种数据读写方法及装置 |
CN104850462B (zh) * | 2015-05-04 | 2018-12-14 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN104850462A (zh) * | 2015-05-04 | 2015-08-19 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN105183570A (zh) * | 2015-09-22 | 2015-12-23 | 上海斐讯数据通信技术有限公司 | 向核心进程发送大量qinq配置数据的系统及其方法 |
CN105955802A (zh) * | 2016-04-21 | 2016-09-21 | 青岛海信移动通信技术股份有限公司 | 一种移动终端的应用运行方法及移动终端 |
CN105955802B (zh) * | 2016-04-21 | 2020-06-12 | 青岛海信移动通信技术股份有限公司 | 一种移动终端的应用运行方法及移动终端 |
CN106708631A (zh) * | 2016-11-30 | 2017-05-24 | 福建省天奕网络科技有限公司 | 共享内存属性修改方法及其系统 |
CN106598756B (zh) * | 2016-12-13 | 2020-06-16 | 重庆川仪自动化股份有限公司 | 不同应用程序之间的数据交互方法 |
CN106598756A (zh) * | 2016-12-13 | 2017-04-26 | 重庆川仪自动化股份有限公司 | 不同应用程序之间的数据交互方法 |
CN108446182A (zh) * | 2018-02-07 | 2018-08-24 | 链家网(北京)科技有限公司 | 一种基于共享内存的跨进程通信方法及装置 |
CN109002364A (zh) * | 2018-06-29 | 2018-12-14 | Oppo(重庆)智能科技有限公司 | 进程间通信的优化方法、电子装置以及可读存储介质 |
CN109002364B (zh) * | 2018-06-29 | 2021-03-30 | Oppo(重庆)智能科技有限公司 | 进程间通信的优化方法、电子装置以及可读存储介质 |
CN113486958A (zh) * | 2021-07-07 | 2021-10-08 | 湖北昊鑫自动化设备科技有限公司 | 一种锯链缺陷检测方法、存储介质及系统 |
CN117077115A (zh) * | 2023-10-13 | 2023-11-17 | 沐曦集成电路(上海)有限公司 | 芯片验证阶段跨语言多进程交互方法、电子设备和介质 |
CN117077115B (zh) * | 2023-10-13 | 2023-12-15 | 沐曦集成电路(上海)有限公司 | 芯片验证阶段跨语言多进程交互方法、电子设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103064748A (zh) | 一种Linux下处理多进程间通讯的方法 | |
CN109388595B (zh) | 高带宽存储器系统以及逻辑管芯 | |
CN101799773B (zh) | 并行计算的内存访问方法 | |
CN106575220B (zh) | 多个经集群极长指令字处理核心 | |
CN103399856A (zh) | 面向scada系统的爆发式数据缓存处理系统及其方法 | |
CN104461551A (zh) | 基于数据并行处理的大数据处理系统 | |
WO2019047441A1 (zh) | 一种通信优化方法及系统 | |
WO2014206289A1 (en) | Method and apparatus for outputting log information | |
CN105210037A (zh) | 存储器访问的加快 | |
CN104657224A (zh) | 一种进程间通信的方法和装置 | |
CN104834504A (zh) | 基于mcu和dsp主从协同工作的soc双核架构及其工作方法 | |
CN103150149A (zh) | 处理数据库重做数据的方法和装置 | |
CN101310241A (zh) | 用于在多处理器系统中共享存储器的方法和装置 | |
CN104572781A (zh) | 一种交易日志产生方法和装置 | |
WO2019125706A1 (en) | Efficient sharing of non-volatile memory | |
CN112199442A (zh) | 分布式批量下载文件方法、装置、计算机设备及存储介质 | |
CN105353987A (zh) | 一种文件处理方法及装置 | |
CN101727423A (zh) | 可重配置fpga上可抢占硬件多任务系统及其实现方法 | |
CN102141903B (zh) | 用于16/32位混合指令的对称编码装置与译码装置 | |
CN114968373A (zh) | 指令分派方法、装置、电子设备及计算机可读存储介质 | |
CN203455832U (zh) | 一种电子设备 | |
WO2013112145A1 (en) | User generated data center power savings | |
CN104156316B (zh) | 一种Hadoop集群批处理作业的方法及系统 | |
CN102117261A (zh) | 一种芯片内部处理器之间的通信方法 | |
CN102609306B (zh) | 多核处理芯片对视频处理任务的处理方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130424 |