
进程通信的目的 IPC(Inter-Process Communication)进程间通信。 在没有学习进程通信前总感觉两个程序之间需要交换数据,一般都是基于文件,比如一个进程向文本文件里面写数据,而另外一个进程读取数据,当然这样两个进程的读写就需要互斥,然而这样的读写文件需要不断的读写磁盘,属实效率不高,那么今天就学习一波实际的进程通信 : 01 为什么需要进程通信
02 进程通信特点 在文章开头,小哥一直以为是以类似于文本文件的方式共享,不过通过文件、数据库等等的方式交换信息,都需要通过读写磁盘来交换信息,这样导致效率非常低下,而进程通信相对需要比较迅速、实时。 然而进程之间是相互独立的,其用户空间不能随意访问,不过每个进程可以通过操作系统作为媒介来进行交互,这样就不需要通过那些缓慢的媒介,以加快通信。 对于Linux进程间通信大致可以分为如下6种通信方式: 01 管道pipe 管道可以分为 有名管道 和 无名管道
02 信号signal 机制比较复杂,比如用于通知接收进程某个事件已经发生. 03 消息队列 消息队列,存放在内核中,一种异步通信的典型。 04 共享内存Shared Memory 该方式是直接读写内存,不需要额外的格式操作等,算是进程通信中最快的方式。 其类似于共享资源多进程操作,需要同步,比较常用的就是与信号量结合使用。 05 信号量semaphore 信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据,跟RTOS中线程中的信号量是类似的,最简单的01信号量,还有计数信号量等等。 06 套接字socket socket进程通信算是操作系统均有的一种IPC方式,所以是非常常见的。 这里小哥就介绍了进程通信的基础知识,希望能够对你有帮助,今天就分享到这里,后面小哥在学习总结详细的进程通信知识! |