码迷,mamicode.com
首页 > 系统相关 > 详细

Linux进程间的通信方法简介

时间:2018-04-08 16:34:13      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:进程通信   linux   

一、本地进程间的通信方式:

    1.管道(pipe)

        利用管道文件可以进行进程间数据的通信,通常是具有血缘关系的父子进程间的通信方式。

        管道通信为半双工模式,父子进程可以通过调用内核中的read()和write()命令来向管道文件进行读写操作。

        管道通信是基于硬盘内的文件,所以I/O速度较低。


    2.消息队列

        消息队列是一种类似链表的数据结构,存放于内存中,因此I/O速度较管道更快,通过ipcs -q命令可以查看当前系统中被创建的消息队列。

        多个不同进程可以使用同一个消息队列进行通信,消息队列中的数据是以块存放,每块数据有特定的mtype,进程在发送和接收数据的时候必须指定特定的mtype。


    3.信号量

        用于处理进程的同步和互斥:

            同步:严格安排进程执行的先后顺序

            互斥:两个进程不可以同时使用同一资源(代码段),可以说是特殊的同步

        信号量可以理解为一个计数器,当有进程申请使用信号量时,将其计数-1(P操作),当计数器为0时表示此时没有资源,其他进程要访问必须等待,当一个进程使用完毕资源时,将其计数+1(V操作)。


    4.共享内存

        类似消息队列,但操作更为简洁,通过ipcs -m命令可以查看当前系统中被创建的共享内存区。

        进程想使用共享内存区时,需要先创建对该共享内存的链接。


二、不同主机进程间的通信(网络通信)

    通过两台主机的一对套接字来进行通信,套接字由ip地址和端口号组成,一个套接字标识特定主机的特定进程。

    服务器进程创建套接字,将其设置监听状态,这种进程称为守护进程。

    之后客户端创建用于请求链接的套接字,对服务器处于监听状态的套接字发出链接请求,从而建立链接。


    

Linux进程间的通信方法简介

标签:进程通信   linux   

原文地址:http://blog.51cto.com/papapa213/2095713

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!