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;
    }
  • 相关阅读:
    本周学习进度
    梦断代码阅读笔记01
    站立会议06(第二期)
    计算机软件方面的面试题?
    算法Bai-Piao
    哈希表
    关于编写代码的一些建议
    使用Promise
    Lintcode
    搭建Android浏览器壳子
  • 原文地址:https://www.cnblogs.com/ChunJian-YANG/p/5356968.html
Copyright © 2011-2022 走看看