• 第四章:管道与FIFO


    4.1:概述

    管道是最初的Unix IPC形式,可追溯到1973年的Unix第三版。尽管对于许多操作来说很有用,但它们的根本局限在于没有名字,从而只能由亲缘关系的进程使用。这一点随FIFO的加入得改正。

    本章讲述管道和FIFO的创建与使用。我们使用一个简单的文件服务器例子,同时查看一些客户-服务器程序设计问题:IPC通道需要量、迭代服务器与并发服务器、字节流与消息接口。

    4.2:一个简单的客户-服务器例子

    下图所示的客户-服务器例子在本章和第六章中都要用,我们用它来分析说明管道、FIFO和System V消息队列。

    图中客户从标准输入(stdin)读进一个路径名,并把它写入IPC通道。服务器从该IPC通道读出这个路径名,并尝试打开其文件来读。如果服务器能打开该文件,它就读出其中的内容,并写入IPC通道,以作为对客户的相应;否则,它就响应以一个出错消息。

    4.3:管道

    所有的Unix都提供管道,它由pipe函数创建,提供一个单向数据流。

    #include <unistd.h>
    int pipe(int fd[2]); // 返回:若成功则为0,若出错则为-1

    该函数返回两个文件描述符:fd[0]和fd[1],前者打开来读,后者打开来写。

    管道的典型用途是以下述方式为两个不同进程(一个是父进程,一个是子进程)提供进程间的通信手段。首先由一个进程(它将成为父进程)创建一个管道后调用fork派生一个自身的副本,接着,父进程关闭这个管道的读出端(fd[0]),子进程关闭同一管道的写入端(fd[1]),这样就在父子进程间提供了一个单向数据流。如果要实现双向的数据流,则需要使用两个管道。

    4.4:全双工管道

    用两个半双工管道来实现。

    4.5:popen和pclose

    4.6:FIFO

    FIFO即有名管道。

    4.7:管道和FIFO的额外属性

    4.8:单个服务器,多个客户

    4.9:对比迭代服务器和并发服务器

    4.10:字节流和消息

    4.11:管道和FIFO限制

    4.12:小结

  • 相关阅读:
    【8-21】java学习笔记03
    【每天一点点】
    【8-20】java学习笔记02
    【8-19】java学习笔记01
    【8-18】JS学习01
    【8-17】HTML测试
    Selenium之WebDriverWait
    Selenium之XPATH定位方法
    Fiddler用法
    微服务架构系统的测试
  • 原文地址:https://www.cnblogs.com/lit10050528/p/5472403.html
Copyright © 2020-2023  润新知