zoukankan      html  css  js  c++  java
  • 文件描述符和文件指针的相互转换

    1文件描述符,在linux系统中,设备也是以文件的形式存在,要对该设备进行操作就必须先打开这个文件,打开这个文件就会获得这个文件描述符,它是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。
    文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。
    缺点:不能移植到非UNIX系统上,也不直观。
        文件指针,C语言中使用的是文件指针而不是文件描述符作为I/O的句柄,“文件指针(file pointer)”指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包括一个缓冲区和一个文件描述符值。而文件描述符值是文件描述符表中的一个索引。从某种意义上来说,文件指针就是句柄的句柄。
    2. 文件指针/句柄(FILE*)、文件描述符以及文件路径(filepath)的相互转换
    文件路径 到 文件指针:filepath --fopen()-->FILE*;
    文件路径 到 文件描述符:filepath--open()--fd; 
    文件描述符 到 文件指针:fd--fdopen()-->FILE*;
    文件指针 到 文件描述符:FILE*--fileno()--->fd;
     
    3.示列:
    int main(int argc, char **argv)
    {
    FILE *fp;
    printf("stdin fileno:%d ",fileno(stdin));
    printf("stdout fileno:%d ",fileno(stdout));
    printf("stderr fileno:%d ",fileno(stderr));
    fp = fopen("aa.c","w+");
    printf("aa.c'fileno %d ",fp->_fileno);
    return 0;
    }
  • 相关阅读:
    PHP新的垃圾回收机制:Zend GC详解
    SSH隧道技术简介
    mysql主从延迟
    非root配置linux下vim
    PHP 中的 9 个魔术方法
    PHP内核介绍及扩展开发指南—Extensions 的编写(下)
    PHP内核介绍及扩展开发指南—Extensions 的编写
    php 扩展开发
    php opcode
    rsa 数学推论
  • 原文地址:https://www.cnblogs.com/ChunJian-YANG/p/5356968.html
Copyright © 2011-2022 走看看