Linux:进程间通信方式
2017-12-07 17:02
246 查看
概述
进程通信的目的:
数据传输
共享数据
通知事件
资源共享
进程控制
进程间通信的几种方式:
管道和有名管道
信号
消息队列
共享内存
信号量
套接字
管道通信
管道的通信方式分为无名管道和有名管道,无名管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制。
特点:
管道是半双工的,数据只能向一个方向流动;需要双方通信时,建立起两个管道。
只能用于父子进程或者兄弟进程之间。
单独构成一种独立的文件系统。管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件。不属于某种文件系统,而是自立门户,单独构成一种文件系统。并且只存在于内存中。
数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。
建立无名管道:
#include<stdio.h>
int pipe(int filedes[2]);
建立有名管道:
#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char *pathname, mode_t mode);
信号
信号本质:信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断信号是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道到底什么时候到达。
信号来源:信号事件发生有两个来源,硬件来源(比如按下键盘或其他硬件故障);软件来源,最常用发生信号的系统函数是kill,raise,alarm,setitimer及sigqueue函数,软件来源还包括一些非法运算等操作。
分类:
(1)从可靠性方面,分为可靠信号与不可靠信号
(2)从时间方面,可分为实时信号与非实时信号
消息队列
管道只能传送无格式字节流,能够传送的信号量有限,消息队列(也称为报文队列)则克服了 这些缺点。
消息队列是一个消息的链表,可以把消息看作是一个记录,具有特定的格式。
消息队列的执行步骤大致如下:
1.打开、创建
2.发送信息
3.接受信息
4删除消息队列
进程通信的目的:
数据传输
共享数据
通知事件
资源共享
进程控制
进程间通信的几种方式:
管道和有名管道
信号
消息队列
共享内存
信号量
套接字
管道通信
管道的通信方式分为无名管道和有名管道,无名管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制。
特点:
管道是半双工的,数据只能向一个方向流动;需要双方通信时,建立起两个管道。
只能用于父子进程或者兄弟进程之间。
单独构成一种独立的文件系统。管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件。不属于某种文件系统,而是自立门户,单独构成一种文件系统。并且只存在于内存中。
数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。
建立无名管道:
#include<stdio.h>
int pipe(int filedes[2]);
建立有名管道:
#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char *pathname, mode_t mode);
信号
信号本质:信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断信号是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道到底什么时候到达。
信号来源:信号事件发生有两个来源,硬件来源(比如按下键盘或其他硬件故障);软件来源,最常用发生信号的系统函数是kill,raise,alarm,setitimer及sigqueue函数,软件来源还包括一些非法运算等操作。
分类:
(1)从可靠性方面,分为可靠信号与不可靠信号
(2)从时间方面,可分为实时信号与非实时信号
消息队列
管道只能传送无格式字节流,能够传送的信号量有限,消息队列(也称为报文队列)则克服了 这些缺点。
消息队列是一个消息的链表,可以把消息看作是一个记录,具有特定的格式。
消息队列的执行步骤大致如下:
1.打开、创建
2.发送信息
3.接受信息
4删除消息队列
相关文章推荐
- linux下进程间通信的几种主要方式简介
- 【Linux】几种进程间通信方式的清晰比较
- Windows&Linux下进程间通信的方式
- linux系统的进程间通信方式
- Linux 进程间通信 - 共享内存shmget方式
- Linux 进程间通信方式(1)
- Linux进程间通信的各种方式及其比较
- Linux进程间通信(IPC)方式总结
- Linux进程间通信的几种方式总结--linux内核剖析(七)
- linux系统的进程间通信方式
- 进程间通信方式总结(windows 和linux)
- Linux 进程间通信方式(2)
- linux进程间通信的方式
- Linux进程间通信(一)匿名管道方式
- linux系统的进程间通信的几种方式(转)
- Linux进程间通信(IPC)方式总结
- linux进程间同步的机制/方式和进程间通信的方法
- Linux c==几种进程间通信方式的特点对比
- Linux进程间通信-几种通信方式的比较
- Linux 进程间通信 - 共享内存shmget方式(转)