Linux——通信

一、进程通信

1、同一主机

1)、古老的通信方式
        管道:
           无名管道  
           有名管道  
        信号

2)、IPC对象通信
        消息队列(用的相对少,这里不讨论)
        共享内存(*)         //最高效 
        信号量集( )         //信号量  

2、不同主机 

1)、socket通信
         网络通信

3、举例

线程信号:
      posix  sem_init
特列:
      古老的通信方式中,信号是唯一的异步通信
      所有的通信方式中,共享内存是最高效的

管道:无名管道、有名管道

    无名管道 (pipe):只能给有亲缘关系进程通信
    有名管道 (fifo ) :可以给任意单机进程通信(同一主机内)

二、管道通信

1、管道的特性

    1)、管道是 半双工的工作模式
    2)、所有的管道都是特殊的文件不支持定位操作。
               lseek->> fd  fseek ->>FILE* 
               数据流 --- FIFO(first in first out)
    3)、管道是特殊文件,读写使用文件IO。
              fgets,fread,fgetc,
              open,read,write,close;;   

2、管道的读写规则

    1).读端存在,写管道
           管道空:可以写数据
           管道满(超过64k):会造成 写阻塞 
      
    2).读端不存在,写管道
           系统会给进程发一个信号SIGPIPE(管道破裂)

    3).写端存在,读管道
           管道空,读不到数据,
           这时会造成读操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值