Linux进程间通信之概述

来源:互联网 发布:linux创建进程函数 编辑:程序博客网 时间:2024/05/29 15:35

     进程是一个独立的资源分配单元,不同进程间资源是独立的,是没有关联的,也就是不能直接在一个进程访问另一个进程的资源(如打开的文件描述符)。为此,Linux继承了UNIX和System V提供大量进程通信机制来实现统一主机两个进程间通信。此外,Linux还提供了网络主机间进程通信的机制。图示是Linux操作系统所支持的主要进程间的通信机制。 

    

    无名管道PIPE进程间通信方式,无名管道只能实现具有亲缘关系(父子进程)的进程间通信,并且无名管道在通信进程双方退出后自动消失。


    有名管道FIFO进程间通信方式,有名管道克服了无名管道瞬时性问题,采用管道文件来实现同一台主机任意两个进程间的通信。


    信号通信方式,信号实际上是一种中断处理方式,采用信号可以以异步的方式实现两个进程间的通信。


    消息队列通信机制,消息队列主要用来实现两个进程间的少量数据传输,并且,接收方可以根据消息队列中消息的类型选择性地接收消息。


   信号量通信机制,信号量主要用来实现两个进程间同步,最简单的信号量为二无信号量。例如对文件的写操作,因为任何时间段内只能有一个进程写文件内容,如果某进程已经占用该文件资源,此时就可以通过设置信号量为0,告诉其他进程该资源不能用,在写操作完成释放资源后,可以置该信号量值为1表示资源可用。广泛的信号量表示资源数量,例如一个buffer空间可用大小。


    共享内存,共享内容主要用来实现进程间大量数据传输。共享内容机制实际上开辟一段独立的内容空间,然后将其挂接到相互通信的两个进程中,从而实现数据传输。











0 0
原创粉丝点击