# ipc **Repository Path**: zoombeer/ipc ## Basic Information - **Project Name**: ipc - **Description**: 基于linux的进程间通讯库函数和守护进程。提供日志,资源锁,共享内存,进程间消息等组件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2017-11-03 - **Last Updated**: 2021-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## 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) ) #26~14.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) ) #57~precise1-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