Linux
文章平均质量分 87
乔木辛
这个作者很懒,什么都没留下…
展开
-
Linux进程间通信——01管道
进程间通信: 对于每个进程来说,都有一份属于它自己的内存资源,并且独占这份内存资源。而进程间通信的目的就是让不同的进程间能看到一份公共的资源。所有交换的数据必须通过内核来传递,在内核中开辟一块缓冲区,通过这块缓冲区来实现数据的传递,内核提供的这种机制称为进程间通信。 进程间通信的方法:1、管道 2、信号量 3、消息队列 4、共享内存 5、套接字(只有套接字可以跨主机) 匿名管道:pi...原创 2018-10-22 17:17:09 · 170 阅读 · 0 评论 -
Linux进程间通信——02信号量
信号量的作用: 主要用于同步和互斥,防止多个进程同时访问一个共享资源,我们用信号量来保证同一时刻,只有一个执行线程访问临界区(临界区是一个独占式的资源)。它一种特殊的计数器,当信号量的值>0时,其记录的是可被访问的临界资源的个数,当信号量的值<0时,记录的是等待访问临界资源的进程的个数。 信号量只有两个操作:P操作(原子减一,如果值为0,则阻塞),V操作(原子加一)。一般情况信号量...原创 2018-10-22 19:14:49 · 163 阅读 · 0 评论 -
Linux进程间通信——03消息队列
消息队列: 消息:数据+类型 给数据一种特殊的标志 队列:先进先出,但其类似优先级队列。 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法。每个数据块都有一个特定的类型,接收方可以根 据类型来有选择地选择接收数据,而不一定像管道和命名管道那样必须先进先出的方式接收数据。 消息队列也有和管道一样的不足,就是每个消息的最大长度是有上限的,每个消息队列的总的字节数有上限,系统上消息...原创 2018-10-24 14:33:02 · 183 阅读 · 0 评论 -
Linux进程间通信——04共享内存
共享内存: 共享内存时最快的一种IPC(进程间通信)。顾名思义就是两个不相关的进程访问同一个逻辑内存。 为什么快:管道存在数据的拷贝。通过buffer。而内存共享,直接放入内存中。 缺陷:共享内存并没有提供同步机制。也就是说A,B可能同时写入数据,后写的数据会将前面写的数据覆盖掉。所以,我们用信号量对它进行控制。 函数: 头文件:#include <sys/shm.h> ...原创 2018-10-24 16:14:28 · 193 阅读 · 0 评论