C语言进程间通信
文章平均质量分 79
PJubuntu
这个作者很懒,什么都没留下…
展开
-
C语言进程间通信(一)——管道
进程间通信(IPC)是指在不同进程之间传递信息。linux的进程通信方式有管道,消息队列,信号量,共享内存,套接口等方式,下面一一整理。首先是管道(PIPE),管道是Unix系统IPC最古老的方式,所有的Unix系统都提供这种通信机制。它的优点在于简单易用,缺点在于有限制,详细见下面几点: 只能用于父子进程或兄弟进程之间通信大多数系统中都是半双工的,数据信息只能单向流动,如...原创 2012-11-02 08:24:34 · 889 阅读 · 0 评论 -
C语言进程间通信(二)——命名管道
FIFO也称命名管道,是一种文件类型,在文件系统中可见到。管道由于没有名字,所以只能限定在亲缘关系的进程之间的通信。而通过FIFO任意进程之间都能够进行通信了。FIFO的特点如下: 命名管道可用于任何两个进程之间的通信,比管道灵活得多命名管道作为特殊文件存在文件系统中,当进程使用结束后仍存在文件系统,需要“手动”删除创建一个命名管道可以用mkfifo [管道名],删除可以...原创 2012-11-02 08:24:52 · 697 阅读 · 0 评论 -
C语言进程间通信(三)——消息队列
消息队列是最具有数据操作性的数据传输方式,在消息队列中可随意根据特定的数据类型检索消息,随内核持续的消息队列是一个消息的链表,每个消息队列都有个队列头,用结构struct msg_queue描述,队列头包含队列的大量消息,包括消息队列键值,用户ID,组ID,消息数目等。struct msg_queue{ struct ipc_perm q_perm; time_t q_st...原创 2013-05-06 17:14:29 · 782 阅读 · 0 评论 -
C语言进程间通信(四)——共享内存
共享内存通信方式效率最高,毕竟是直接操作内存,但是要保证多个进程对同一块内存访问的同步互斥比较麻烦,借助信号量实现对每个共享存储段,内核维护一个shmid_ds类型的结构体,定义在<sys/shm.h>文件中struct shmid_ds{struct ipc_perm shm_perm; //共享内存的ipc_perm结构size_t shm_segsz; /...原创 2013-05-06 17:14:53 · 310 阅读 · 0 评论