zoukankan      html  css  js  c++  java
  • OS第3次实验报告:命名管道

    • 姓名:巫艳珍
    • 学号:201821121034
    • 班级:计算1812

    1、编写程序

    在服务器上用Vim编写程序:创建一个命名管道,创建两个进程分别对管道进行读fifo_read.c和写fifo_write.c。(给出源代码)

    (1)读fifo_read.c程序,源代码如下:

    (2)写fifo_write.c程序,源代码如下:

    2、分析运行结果

    (1)运行结果:

    (2)分析:

      开两个终端,分别同时运行读和写程序。循环输入内容,通过读程序能够依次读出内容

      mkfifo()函数:

    int mkfifo(const char *filename,mode_t mode)

      ·所需的头文件为:#include <sys/types.h>    #include <sys/stat.h>

      ·mode:

        O_RDONLY:读管道

        O_WRONLY:写管道

        O_RDWR:读写管道

        O_NONBLOCK:非阻塞

      ·若函数成功执行,则返回值为0,否则为-1

    3、 通过该实验产生新的疑问及解答

    疑问:关于管道读写的阻塞问题

    解答:在open()函数中为O_NONBLOCK,表示非阻塞标志

    • 对于读进程:在管道阻塞的情况下,若FIFO中没有数据,则进程将阻塞至有数据写入;在管道未阻塞的情况下,读进程会立即执行,FIFO没数据的话函数将会返回0
    • 对于写进程:在管道阻塞的情况下,写操作会阻塞到数据可以被写入;在管道未阻塞但不能写入全部数据的情况下,读操作进行部分写入或者调用失败
  • 相关阅读:
    POJ1785 Binary Search Heap Construction
    Bzoj1185 [HNOI2007]最小矩形覆盖
    POJ2409 Let it Bead
    Bzoj2732 [HNOI2012]射箭
    Bzoj4515 [Sdoi2016]游戏
    Bzoj3925 [Zjoi2015]地震后的幻想乡
    Bzoj3223 Tyvj 1729 文艺平衡树
    COGS2642 / Bzoj4590 [Shoi2015]自动刷题机
    Bzoj1313 [HAOI2008]下落的圆盘
    python——描述符
  • 原文地址:https://www.cnblogs.com/will-h/p/12708439.html
Copyright © 2011-2022 走看看