zoukankan      html  css  js  c++  java
  • 第11课-无名管道通讯

    1.进程间通讯的目的
    (1)数据传输
    (2)资源共享
    (3)通知事件
    (4)进程控制

    2.通讯发展
    (1)UNIX进程间通讯
    (2)基于System V进程间通讯
    (3)POSIX进程间通讯
    3.POSIX标准

    4.进程间通讯的主要方式
    (1)无名管道
    (2)有名管道
    (3)信号
    (4)消息队列
    (5)共享内存
    (6)信号量
    (7)套接字
    5.管道通信
    (1)一个进程在管道尾部写入数据,另一个进程管道头部读取数据
    (2)无名管道:只能用于父进程子进程之间的通讯
    (3)有名管道:可以用于任意两个进程间的通讯
    6.管道特点:
    (1)管道通讯是单向的,有固定的读端和写端
    (2)数据被读出以后就不存在管道中了
    (3)当进程去读取空管道的时候会阻塞
    (4)当进程往满管道中写入数据的时候会阻塞
    (5)管道容量是64KB
    7.操作无名管道

    8.在子进程创建之前要先创建管道,否则父子进程格子创建自己的管道,达不到传输数据的目的。而且在父进程中要调用wait函数,等待子进程的操作完成,否则有可能父进程结束了子进程还没有开始工作。再有就是每一个进程都要有相应的exit(0)保证进程退出,以及每一个对无名管道的读写操作以后,都要有close函数关闭抽象出来的文件。
    9.创建无名管道

    5.1 创建无名管道

    5.1.1 函数名
    Pipe
    5.1.2 函数原形
    int pipe(int pipefd[2]);
    5.1.3 函数功能
    创建一个管道,使之能用于进程间的通讯
    5.1.4 所属头文件
    <unistd.h>
    5.1.5 返回值
    成功:0
    失败:-1
    5.1.6 参数说明
    pipefd[2]保存读端和写端的文件描述符。因为无名管道一旦被创建,就会被抽象成两个文件,一个读端一个写端。第0个元素对应读端,第1个对应写端。直接用文件编程的函数操作无名管道。

  • 相关阅读:
    原型,构造函数,实例,__proto__
    To me
    那么再会吧!OI!(HNOI2019退役记)
    中山纪念中学培训杂题(难的都不在这里面qwq)
    关于菜鸡我
    树链剖分讲解
    [luogu] P4823 [TJOI2013]拯救小矮人(贪心)
    [luogu] P4551 最长异或路径(贪心)
    [luogu] P4364 [九省联考2018]IIIDX(贪心)
    [luogu] P4155 [SCOI2015]国旗计划(贪心)
  • 原文地址:https://www.cnblogs.com/YanfeiHao/p/4433007.html
Copyright © 2011-2022 走看看