社区
Linux/Unix社区
帖子详情
linux下两进程通信的问题
eques10
2008-12-29 02:32:09
最近在看一些进程通信的原理,程序中要考虑到两个进程之间的通信,具体方案如下:
进程A:为网络服务端程序,负责接收从客户端发送的数据
进程B:特定地执行一个功能,当进程A每次接收完数据后,通知进程B做相应处理,进程B根据A的给的结果后,继续执行原特定功能
这里面涉及到了两个进程之间的通信,看了以下进程间共享内存的方法,但是还是没有什么思路,高手门能不能赐教下,怎样来设计这两个
进程间的通信,用什么方法,谢谢!!!
...全文
133
11
打赏
收藏
linux下两进程通信的问题
最近在看一些进程通信的原理,程序中要考虑到两个进程之间的通信,具体方案如下: 进程A:为网络服务端程序,负责接收从客户端发送的数据 进程B:特定地执行一个功能,当进程A每次接收完数据后,通知进程B做相应处理,进程B根据A的给的结果后,继续执行原特定功能 这里面涉及到了两个进程之间的通信,看了以下进程间共享内存的方法,但是还是没有什么思路,高手门能不能赐教下,怎样来设计这两个 进程间的通信,用什么方法,谢谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xyz0987654321
2009-01-02
打赏
举报
回复
可以有很多方法实现进程间通信,比如:消息队列,共享内存,管道,FIFO,socket等,但具体使用什么方式要根据具体需要而定,因为这些方式都有各自的优势和局限:
使用消息队列能够实现一对多且具有优先级的通信交互,且具有很好的异步性,这使的程序架构的耦合度很低,但消息队列是内核链表没有引用计数,必须小心的处理进程异常时的残留队列的清除问题(但这通常来说不是问题),另外消息队列只能在本机之内通信,且不能使用select、poll、epoll接口等;
共享内存必须使用某种同步机制,如:信号量或文件锁等,使用它进行消息传输的话,你需要处理有界缓冲区及生产者、消费者等问题,这使你的程序变得复杂且传输的消息大小有限制,所以共享内存更适合用于数据的共享(如:某个数据结构或数据表的内容等),而不适合数据的传输;
管道/FIFO更适合哪些有亲缘关系的进程间通信,除非使用命名管道,其传输的消息大小有限制,超过限制的大消息则可能出现交叉的情况,但管道可以使用多路转接等接口;
SOCKET方式最大的好处是你的程序可以统一的处理本地消息和网络消息,但处理本地消息效率不如IPC机制高。
线程方式表面看来使处理简单了,但其实它使你的应用程序变得复杂而不稳定,尤其是程序有一定规模的时候,因此能不用线程就不用线程,尽量采用多进程方式处理。
因此:如果你的系统整体架构是采用多进程方式的话,你应该使用消息队列方式;如果你的程序是面向网络应用的,如:WEB应用,则建议采用SOCKET方式。
caremsi
2009-01-02
打赏
举报
回复
mark
猫已经找不回了
2009-01-02
打赏
举报
回复
进程A:为网络服务端程序,负责接收从客户端发送的数据
进程B:特定地执行一个功能,当进程A每次接收完数据后,通知进程B做相应处理,进程B根据A的给的结果后,继续执行原特定功能
楼主,你的需求其实2个线程就ok了,没必要多进程吧.一般的socket server,一个线程a就搞定了哦.然后B作为主线程,线程间的同步,数据共享也方便得多.
leeyiqun
2008-12-29
打赏
举报
回复
可以用线程来实现比较方便,加上互斥锁和信号量。
joyself
2008-12-29
打赏
举报
回复
需求提得不够详细,这也正是大家给了这么多选择的原因。
甚至我可以说,fork一个进程,或者pthread_create建个线程,都可以做。
所以,能说说,为什么是需要两个进程?还有什么其他的限制条件?
threeleafzerg007
2008-12-29
打赏
举报
回复
系统提供的进程通信够多的了
命名pipe 共享内存 消息
不过偶推荐 unix domain socket 很不错的说 试试哈
wangkongxinglang
2008-12-29
打赏
举报
回复
本人补充几个命令,如PS PSTREE NICE RENICE 等
hngsc_0
2008-12-29
打赏
举报
回复
建立一个有名管道,A-B通过该管道通讯,B进程用select查询
Leejun527
2008-12-29
打赏
举报
回复
如果只有这两个进程的话,实现你说的功能最简单的方法就是用消息队列了。
zznda4
2008-12-29
打赏
举报
回复
个人觉得 socket比较简单,去 google找下 应该有很多这样的 例子
鲫鱼跃龙门
2008-12-29
打赏
举报
回复
进程间通信的手段很多:管道、命名管道、socket、信号、共享内存、消息队列等等。
这么多方法你随便选,看你自己的程序适合用那种了。
使用都不复杂,不熟悉的话google一下。
深入分析
Linux
内核源码.chm
8 .8
Linux
2.4文件系统的移植
问题
第九章 Ext2文件系统 9.1 基本概念 9.2 Ext2的磁盘布局和数据结构 9.3 文件的访问权限和安全 9.4 链接文件 9.5 分配策略 第十章 模块机制 10.1 概述 10.2 实现机制 10.3 模块的装入...
Linux
内核源代码情景分析 (上下册 高清非扫描 )
本PDF电子书包含上下
两
册,共1576页,带目录,高清非扫描版本。 作者: 毛德操 胡希明 丛书名:
Linux
内核源代码情景分析 出版社:浙江大学出版社 目录 第1章 预备知识 1.1
Linux
内核简介. 1.2 Intel X86 CPU系列...
Linux
第二次试验:
Linux
下的
进程通信
实验
Linux
第二次试验:
Linux
下的
进程通信
实验前言一、实验目的二、实验工具与设备三、实验预备知识三、实验内容和步骤五、实验代码及步骤截图六、实验总结 前言 为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的...
Linux
系统-进程间通信
本章主要讲解学习
Linux
中本系统下的进程间通信概念:进程间通信简称IPC(Inter process communication),进程间通信就是在不同进程之间传播或交换信息进程间通信目的:数据传输:一个进程需要将它的数据发送给另一...
【
Linux
】进程间通信
1. 进程间通信 1.1. 进程间通信的目的 1.2. 如何实现进程间通信 2. 管道通信 2.1. 匿名管道 2.1.1 创建匿名管道 2.1.2 . 深入理解匿名管道 2.2. 命名管道 2.2.1. 创建命名管道 3. system V 标准进程间通信 ...
Linux/Unix社区
23,120
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章