浅谈Linux进程间通信方式及优缺点

 更新时间:2017年11月01日 15:03:29   作者:xinianbuxiu  
这篇文章主要介绍了浅谈Linux进程间通信方式及优缺点,具有一定参考价值,需要的朋友可以了解下。

1)管道

管道分为有名管道和无名管道

无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无明管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式。

有名管道也是一种半双工的通信方式,但是它允许无亲缘关系进程间的通信。

2)信号量

信号量是一个计数器,可以用来控制多个线程对共享资源的访问.,它不是用于交换大批数据,而用于多线程之间的同步.它常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源.因此,主要作为进程间以及同一个进程内不同线程之间的同步手段.

Linux提供了一组精心设计的信号量接口来对信号进行操作,它们不只是针对二进制信号量,下面将会对这些函数进行介绍,但请注意,这些函数都是用来对成组的信号量值进行操作的。它们声明在头文件sys/sem.h中。

semget函数

它的作用是创建一个新信号量或取得一个已有信号量

semop函数

它的作用是改变信号量的值

semctl函数

该函数用来直接控制信号量信息

3)信号

信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生.

4)消息队列

消息队列是消息的链表,存放在内核中并由消息队列标识符标识.消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点.消息队列是UNIX下不同进程之间可实现共享资源的一种机制,UNIX允许不同进程将格式化的数据流以消息队列形式发送给任意进程.对消息队列具有操作权限的进程都可以使用msget完成对消息队列的操作控制.通过使用消息类型,进程可以按任何顺序读信息,或为消息安排优先级顺序.

5)共享内存

共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问.共享内存是最快的IPC(进程间通信)方式,它是针对其它进程间通信方式运行效率低而专门设计的.它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步与通信.

6)套接字

socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器区分开来。

套接字的特性由3个属性确定,它们分别是:域、类型和协议。

可用于不同及其间的进程通信

总结

以上就是本文关于浅谈Linux进程间通信方式及优缺点的全部内容,希望对大家有所帮助。欢迎参阅:Linux十个新手命令分享Linux下文件的切分与合并的简单方法介绍详解Docker使用Linux iptables 和 Interfaces管理容器网络等,感谢朋友们对本站的支持!

相关文章

  • ubuntu13.10编译安装mono环境(一)

    ubuntu13.10编译安装mono环境(一)

    Mono是一个自由开放源代码项目。该项目的目标是创建一系列符合ECMA标准的.NET工具,包括C#编译器和通用语言架构。Mono项目不仅可以运行于Windows系统上,还可以运行于Linux,FreeBSD,Unix,OS X和Solaris,甚至一些游戏平台,例如:Playstation 3,Wii或XBox 360。
    2014-07-07
  • 在Apache服务器中运行CGI程序的方法

    在Apache服务器中运行CGI程序的方法

    这篇文章主要介绍了在Apache服务器中运行CGI程序的方法,文中以Perl脚本作为示例,需要的朋友可以参考下
    2015-07-07
  • centos下yum搭建安装linux+apache+mysql+php环境教程

    centos下yum搭建安装linux+apache+mysql+php环境教程

    本篇文章介绍了centos下yum搭建安装linux+apache+mysql+php环境,对学习centos有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-10-10
  • Linux之性能监测命令解读

    Linux之性能监测命令解读

    这篇文章主要介绍了Linux之性能监测命令,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • centos8 使用yum 安装 rabbitmq的教程

    centos8 使用yum 安装 rabbitmq的教程

    这篇文章主要介绍了centos8 yum 安装 rabbitmq的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • CentOS查询软件包的安装位置

    CentOS查询软件包的安装位置

    这篇文章主要介绍了在CentOS中使用yum -ql <软件包名>的方式查询软件包的安装位置,有需要的朋友可以参考下
    2014-09-09
  • 详解linux 关机命令总结

    详解linux 关机命令总结

    本篇文章主要介绍了linux 关机命令总结,linux下常用的关机命令有:shutdown、halt、poweroff、init,有兴趣的可以了解一下。
    2016-12-12
  • 超详细讲解Linux DHCP服务

    超详细讲解Linux DHCP服务

    这篇文章主要介绍了Linux DHCP 服务,它可以避免IP地址冲突,提高了IP地址的利用率等优点。感兴趣的小伙伴一起来学习吧
    2021-08-08
  • 使用Apache ab工具对Apache服务器进行简单的压力测试

    使用Apache ab工具对Apache服务器进行简单的压力测试

    这篇文章主要介绍了使用Apache ab工具对Apache服务器进行简单的压力测试的方法,文中还对如何查看当前Apache的连接数的方法作了介绍,需要的朋友可以参考下
    2016-03-03
  • Centos8搭建配置nis域服务详细步骤

    Centos8搭建配置nis域服务详细步骤

    大家好,本篇文章主要讲的是Centos8搭建配置nis域服务详细步骤,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论