linux跨进程通信方式,Linux进程间的通信方法简介

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

1.管道(pipe)

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

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

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

2.消息队列

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

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

3.信号量

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

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

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

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

4.共享内存

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值