• 第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个对应写端。直接用文件编程的函数操作无名管道。

  • 相关阅读:
    uniapp 微信小程序
    vue3获取当前路由
    常用网址
    (转)maven引入本地jar包的方法
    转:maven打包加时间戳方法总结
    Vue封装一个仿淘宝分页组件
    使用GitHub Actions自动构建DockerHub镜像
    luminati代理快速使用教程
    Redis Cluster 部署、在线扩容、缩容、迁移、集群管理实践
    Docker安装RabbitMQ以及无权限访问 vhost '/' 的解决方法
  • 原文地址:https://www.cnblogs.com/YanfeiHao/p/4433007.html
Copyright © 2020-2023  润新知