1 Star 0 Fork 2

Flying / ipc

forked from zoombeer / ipc 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

IPC

  基于linux的进程间通讯库函数和守护进程。

特性

提供日志,资源锁,共享内存,进程间消息等组件

文档

用法 构建IPC时会生成动态库和可执行文件,默认(定义在make.defines)在/usr/local/lib/安装动态库,在/usr/local/bin安装可执行文件。你可以修改这两个安装目录,确保你的可执行文件能找到IPC编译的动态库即可。通常情况下你只需要执行sudo ldconfig即可

demo的test.sh展示了例子的用法。你可以任意修改。
限制1:所有的demo共用System V IPC 不支持多个demo同时测试,
限制2:demo中的server会启动System V IPC,有一定的概率,client先于server运行而导致测试失败,有两个办法可以避免
		A:通过更改server的写法,使用fork + setsid + sleep 确保server已经建立了ipc之后再运行client,或者通过共享内存标志位来判断,这2个办法不是特别优雅
		B:通过2个session来,在一个session运行server之后,另外一个session运行client,

设计策略: 1:使用了system V IPC, 计划添加posix IPC 2:lock和share memory并没有解耦,选择了通过共享内存来记录lock的状态,如果不需要lock的状态,可以把lock和sharememory解耦 3:降低复杂度,进程之间message采用一收一发的模式,不支持A进程到B进程的多发多收 ,支持A进程到B,C,D...的进程的多发多收

测试记录: ubuntu14.04;ubuntu12.04;fedora20 cat /proc/version 1:Linux version 3.19.0-25-generic (buildd@lgw01-57) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #2614.04.1-Ubuntu SMP Fri Jul 24 21:18:00 UTC 2015 2:Linux version 3.13.0-32-generic (buildd@phianna) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #57precise1-Ubuntu SMP Tue Jul 15 03:51:20 UTC 2014 3: Linux version 3.11.10-301.fc20.i686+PAE (mockbuild@bkernel02) (gcc version 4.8.2 20131017 (Red Hat 4.8.2-1) (GCC) ) #1 SMP Thu Dec 5 14:12:06 UTC 2013

TODO: 1:timer动态内存管理改成静态管理,优化timer算法 2:lock添加上timeout选项 3:message多发多收 4:添加posix IPC

空文件

简介

基于linux的进程间通讯库函数和守护进程。提供日志,资源锁,共享内存,进程间消息等组件 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/mFlying/ipc.git
git@gitee.com:mFlying/ipc.git
mFlying
ipc
ipc
master

搜索帮助

14c37bed 8189591 565d56ea 8189591