zoukankan      html  css  js  c++  java
  • [Linux网络编程学习笔记]FIFO的创建和使用

    管道只能用于在同一祖父进程创建的进程间进行通信,FIFO(先进先出)类似于管道,也只能单向传递数据流。不过每个FIFO都有一个路径名与之关联,这就允许无亲缘关系的进程间可以实现通信。FIFO也称有名管道。

    FIFO由mkfifo函数创建。

    #include <sys/types.h>
    
    #include <sys/stat.h>
    
    int mkfifo(const char *pathname, mode_t mode);
    
    

    如果只是打开一个FIFO而不是创建新的FIFO,那么就可以调用open()函数实现。

    FIFO是先进先出模式,对它的读总是从开头来读,写总是被添加到末尾。且不能对它进行lseek操作。

    1.用FIFO实现多客户服务

    image

    2.系统对管道和FIFO的限制

    (1)一个进程在同一时刻所能打开的描述符的最大数目为OPEN_MAX

    (2)可写进管道或FIFO的最大数据量PIPE_BUF

    通过sysconf函数可以获得OPEN_MAX的值(在shell中通过limit命令可以修改它的值),而PIPE_BUF的值定义在limits.h头文件中,它的值在运行中通过调用pathconf或fpathconf取得。

    作者:涵曦www.hanxi.cc
    出处:hanxi.cnblogs.com
    GitHub:github.com/hanxi
    Email:im.hanxi@gmail.com
    文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    《 Skynet 游戏服务器开发实战》

  • 相关阅读:
    VI命令----用于检索
    NIO框架Mina学习
    Android闹钟开发与展示Demo
    Golang mysql使用举例---连接本地数据库
    mysql通信协议
    大小端定义
    npm是什么
    菜鸟如何学习vue
    cgred不能自动将pid放入tasks
    centos7上为什么不使用libcgroup进行资源限制
  • 原文地址:https://www.cnblogs.com/hanxi/p/2041768.html
Copyright © 2011-2022 走看看