进程间的通信
XiaoCheng'Blog
...
展开
-
Linux进程间的通信之消息队列
消息队列 消息队列(Message Queue,简称MQ)提供了一个从一个进程向另外一个进程发送一块数据的方法,每个数据块都被认为 是有一个类型,接收者进程接收的数据块可以有不同的类型值。消息队列也有管道一样的不足,就是每个消息的最大长度是有上 限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限 (MSGMNI)。 M...原创 2020-03-21 17:54:22 · 229 阅读 · 0 评论 -
Linux/unix进程间的通信之共享内存
目录共享内存内存共享涉及到的函数shmget()shmat()shmdt()shmctl()编程示例:运行结果 共享内存 共享内存,顾名思义,就是两个或多个进程都可以访问的同一块内存空间,一个进程对这块空间内容的修改可为其他参与通信 的进程所看到的。显然,为了达到这个目的就需要做两件事:一件是在内存划出一块区域来作为共享区;另一...原创 2020-03-21 17:14:23 · 318 阅读 · 0 评论 -
Linux进程间的通信之信号量
信号量 在创建子进程后,究竟是父进程还是子进程先运行这由操作系统调度策略决定,而如果要保证父子进程执行的先后顺序呢?我们可以使用sleep函数使得父子进行按照我们预想的顺序进行执行。但是要向我们那样使用sleep()函数,只能保证先执行子进程,但是不能保证子进程执行完后再执行父进程。所以如果我们想要子进程完全 执行完后再执行父进程,就可以利用信号量(Semaphore)来解决它们之间的同...原创 2020-03-21 13:06:41 · 510 阅读 · 0 评论 -
Linux进程间的通信之命名socket
命名socket 使用socket除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通 信,这种方式就是命名socket(Named Socket)又叫Unix域socket(Unix Domain Socket)。Unix域协议并不是一个实际的 协议族,而是在单个主机上执行客户/服务通信的一种方式,也是进程间通信(IPC)的一种方式。UNI...原创 2020-03-20 22:27:21 · 892 阅读 · 0 评论 -
Linux/Unix进程间的通信之命名管道
目录管道(fifo)命名管道的定义和特点管道与命名管道的区别说明代码示例运行结果 管道(fifo) 管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这一特点决定了器使用的局限性。管道是Linux支持的最初Unix IPC形式之一,具有以下特点:数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如...原创 2020-03-19 20:49:26 · 1221 阅读 · 2 评论 -
Liunx进程间通信之管道
管道(pipe) 管道是UNIX系统IPC的最古老的形式,所有的UNIX系统都提供此种通信机制。管道的实质是一个内核缓冲区,进程以先进 先出(FIFO, First In First Out)的方式从缓冲区存取数据:管道一端的进程顺序地将进程数据写入缓冲区,另一端的进程则顺 序地读取数据,该缓冲区可以看做一个循环队列,读和写的位置都是自动增加的,一个数据只能被读一次,读出以后再缓冲区都 不...原创 2020-03-19 11:57:55 · 136 阅读 · 0 评论 -
Liunx进程间通信之信号
常用的进程间通信(IPC,InterProcess Communication)的方法 信号 ( Sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生; 管道(Pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系(通常是指父子进程关系) 的进程间使用; 命名管道FIFO:命名管道(Named Pipe)也是半双工的通信方式,但...原创 2020-03-19 10:27:04 · 411 阅读 · 0 评论