Linux IPC系列
2011-10-13 15:48 Aga.J 阅读(640) 评论(0) 编辑 收藏 举报Mark Down! When I am spare, I will review it.
1 管道
半双工,可以有关系或无关系的进程间使用,FIFO(特殊文件),使用时管道的读写规则如读写打开,读写过程,阻塞读写,有较多地方需要注意!
2 信号
异步方式,可靠和不可靠,kill,raise(向自身发送信号),sigqueue(支持信号带参数,之前可以配置信号处理函数),alarm(只有SIGALRM信号),settimer(更加强大的定时器),abort(SIGABORT信号)
信号安装靠signal和sigaction(与sigqueue配合)
3 消息队列
消息队列与管道以及有名管道相比,具有更大的灵活性,首先,它提供有格式字节流,有利于减少开发人员的工作量;其次,消息具有类型,在实际应用中,可作为优先级使用。这两点是管道以及有名管道所不能比的。同样,消息队列可以在几个进程间复用,而不管这几个进程是否具有亲缘关系,这一点与有名管道很相似;但消息队列是随内核持续的,与有名管道(随进程持续)相比,生命力更强,应用空间更大。
4 信号灯
可以说不是一种纯粹的进程间通信,更加侧重于对进程间共享资源的访问控制。而且这种控制可以由其他进程来修改。
semaphores aren't just thread-safe, they're even signal-safe. If for some reason you have to use thread synchronization inside signal handlers, they have to be semaphores. Otherwise you'll cause deadlocks.
5 共享内存
最快的IPC方式,但是要考虑被拿来map的文件的存在问题,同时,多个进程操作共享内存也要保证一致性,除此以外,共享内存的大小也有限制,还有map后不能越页访问!!
6 网络
多机器间的进程通信
作者:Aga.J
出处:http://www.cnblogs.com/aga-j
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
个人学习笔记仅供本人记录知识所用,不属发表性文章。