• 进程通信方式-管道pipe


    管道是两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称之为半双工管道。

    1、数据只能从一个进程流向另一个进程(其中一个写管道,另一个读管道);如果要进行全双工通信,需要建立两个管道。

    2、管道只能用于父子进程或者兄弟进程间的通信,也就是说管道只能用于具有亲缘关系的进程间的通信,无亲缘关系的进程不能使用管道。

    除了以上局限性,管道还有其他一些不足,如管道没有名字,管道的缓冲区大小是受限制的,管道所传送的是无格式的字节流。

    这就要求管道的输入方和输出方事先约定好数据的格式。

    虽然有这么多的不足,但对一些简单的进程间的通信,管道还是完全可以胜任的。

    使用管道进行通信时,两端的进程向管道读写数据是通过创建管道时,系统设置的文件描述符进行的。

    因此对于管道两端的进程来说,管道就是一个特殊的文件,这个文件只存在于内存中。

    在创建管道时,系统为管道分配一个页面作为数据缓存区,进行管道通信的两个进程通过读写这个缓冲区来进行通信。

    通过管道通信的两个进程,一个进程向管道写数据,另外一个进程从管道的另一端读数据。写入的数据每次都添加在管道缓冲区的末尾,

    读数据的时候都是从缓冲区的头部读出数据。

  • 相关阅读:
    AFNetworking 2.0 -1016错误解决办法
    dispatch_once创建单例
    ASIHTTPRequest 1.x:断点续传
    iOS开源项目汇总
    NSSearchPathForDirectoriesInDomains
    开源中国iOS客户端学习——(一)Prefix.pch文件
    UITableView 滚动条
    隐藏UITableView的滚动条以及修改滚动条的颜色,UITableView 滚动到指定行 section
    收藏几个支持中文的PHP字符串截取函数
    Cookie和Session
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/6703873.html
Copyright © 2020-2023  润新知