zoukankan      html  css  js  c++  java
  • 第三季-第14课-有名管道通讯编程

    第14课-有名管道通讯编程

     

    14.1 核心理论--有名管道

    有名管道又称为FIFO文件,因此我们对有名管道的操作可以采用操作文件的方法,如使用open,read,write等。

    FIFO文件在使用上和普通文件又相似之处,但是也有不同之处:

    1. 读取FIFO文件的进程只能以“RDONLY”方式打开fifo文件。

    2. 写FIFO文件的进程只能以“WRONLY”方式打开fifo文件。

    3. FIFO文件里面的内容被读取后,就消失了。但是普通文件里面的内容读取后还是存在的。

    注:在vim命令里面,在底部打入:set nu可以显示行数。

    14.2 函数学习

    1. 创建有名管道

    (1) 函数名

    mkfifo

    (2) 函数原形

    int mkfifo(const char *pathname, mode_t mode);

    (3) 函数功能

    创建FIFO文件(有名管道)。

    (4) 所属头文件

    #include<sys/types.h>

    #include<sys/stat.h>

    (5) 返回值

    成功:0

    失败:-1

    (6) 参数说明

    pathname:我们创建的fifo文件的名字(包含路径)。

    mode:fifo文件的访问权限

    2. 删除有名管道

    (1) 函数名

    unlink

    (4) 函数原形

    int unlink(const char *pathname);

    (5) 函数功能

    删除FIFO文件(有名管道)以及普通文件。

    (4) 所属头文件

    #include<unistd.h>

    (5) 返回值

    成功:0

    失败:-1

    (6) 参数说明

    pathname:我们要删除的文件的名字(包含路径)。

    14.3 综合实例编程

    任意两个进程利用有名管道通讯。

    创建写进程程序:

    #include<sys/types.h>

    #include<sys/stat.h>

    #include<fcntl.h>

    #include<stdio.h>

    void main()

    {

    int fd;

    /*1.创建fifo文件*/

    mkfifo("/tmp/myfifo",0666);

    /*2.打开fifo文件*/

    fd = open("/tmp/myfifo",O_WRONLY);

    /*3.写入数据fifo文件*/

    write(fd,"hello fifo",11);

    /*4.关闭fifo*/

    close(fd);

    }

     

    创建读进程程序:

    #include<sys/types.h>

    #include<sys/stat.h>

    #include<fcntl.h>

    #include<stdio.h>

    void main()

    {

    int fd;

    char c_buf[15];

    /*1.打开fifo文件*/

    fd = open("/tmp/myfifo",O_RDONLY);

    /*2.读fifo文件数据*/

    read(fd,c_buf,11);

    printf("read is %s ",c_buf);

    close(fd);

    unlink("/tmp/myfifo");

    }                                                                            

     运行结果:当运行./fifo_write时,程序会处于阻塞状态。直达我们在另一个窗口运行./fifo_read时,阻塞状态才会解除,并且打印:read is hello fifo 

  • 相关阅读:
    《财富自由之路》读后感及读书笔记
    echarts3.x 入门
    Ubuntu 16.04 硬盘安装
    语义化版本控制的规范(转载)
    appcan IDE 无法 请求数据
    jQuery extend 函数
    63342 接口 奇遇 IDEA
    C++调用Java的Jar包
    无法打开 源 文件“stdafx.h”的解决方法
    CString的头文件
  • 原文地址:https://www.cnblogs.com/free-1122/p/11346198.html
Copyright © 2011-2022 走看看