博客
关于我
Linux——进程间通信(二):获取和设置文件描述符属性,匿名管道非阻塞读写特性,命名管道,创建共享内存
阅读量:90 次
发布时间:2019-02-25

本文共 589 字,大约阅读时间需要 1 分钟。

匿名管道的非阻塞读写特性

匿名管道在内核中创建一块缓冲区,进程间通过文件描述符进行通信。匿名管道的非阻塞读写特性使得读写操作不会被阻塞,除非管道已满或关闭。

获取文件描述符属性

使用fcntl函数获取读写端的文件描述符属性。F_GETFL获取当前属性,F_SETFL设置属性。例如:

int fcntl(int fd, int cmd, ...);
  • F_GETFL获取属性,不需要参数。
  • F_SETFL设置属性,需指定属性(如O_RDONLYO_WRONLYO_RDWR)。

设置非阻塞属性

设置非阻塞属性后,读写操作不会阻塞。例如:

fcntl(fd[0], F_SETFL, ret | O_NONBLOCK);

验证非阻塞读写

  • 读端读写非阻塞

    • 读端不关闭,写端不关闭:读返回-1,buf为空,错误码为EAGAIN。
    • 写端关闭:读返回-1,错误码不为EAGAIN,说明管道空。
  • 写端写非阻塞

    • 写端不关闭,读端不关闭:写返回EAGAIN,说明管道满。
    • 读端关闭:写进程成为僵尸。
  • 命名管道

    命名管道通过标识符存在,支持不同进程间通信。创建命名管道使用mkfifo,生命周期跟随进程。

    共享内存

    共享内存允许不同进程访问同一物理内存。使用shmget创建共享内存,ipcs -m查看状态。

    通过以上方法,可以充分利用匿名管道和共享内存等 IPC机制,实现高效进程间通信。

    转载地址:http://cvn.baihongyu.com/

    你可能感兴趣的文章
    onCreate()方法中的参数Bundle savedInstanceState 的意义用法
    查看>>
    OneASP 安全公开课,深圳站, Come Here, Feel Safe!
    查看>>
    OneBlog Shiro 反序列化漏洞复现
    查看>>
    one_day_one--mkdir
    查看>>
    ONI文件生成与读取
    查看>>
    onlyoffice新版5.1.2版解决中文汉字输入重复等问题
    查看>>
    oobbs开发手记
    查看>>
    OPEN CASCADE Curve Continuity
    查看>>
    Open Graph Protocol(开放内容协议)
    查看>>
    Open vSwitch实验常用命令
    查看>>
    Open WebUI 忘了登入密码怎么办?
    查看>>
    open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将不会被安装
    查看>>
    open3d-Dll缺失,未找到指定模块解决
    查看>>
    Openbox-桌面图标设置
    查看>>
    opencart出现no such file or dictionary
    查看>>
    opencv Mat push_back
    查看>>
    opencv SVM分类Demo
    查看>>
    opencv videocapture读取视频cap.isOpened 输出总是false
    查看>>
    opencv waitKey() 函数理解及应用
    查看>>
    OpenCV 中的图像转换
    查看>>