• fd与FILE结构体


    文件描述符 fd

    概念:文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。
    习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。

    查看当前最大打开文件描述符数 :

    ulimit -n
    

    FILE结构体

    struct FILE
    {
        char *_ptr;//文件输入的下一个位置
        int _cnt;//当前缓冲区的相对位置
        char *_base;//指基础位置(文件的起始位置)
        int _flag;//文件标志
        int _file;//文件的有效性验证
        int _charbuf;//检查缓冲区状况,如果缓冲区则不读取
        int _bufsiz;//文件的大小
        char *_tmpfname;//临时文件名
    };
    

    (FILE*)文件指针

    文件指针指向进程用户区中一个被叫做FILE结构的结构数据。FILE结构包括一个缓冲区和一个文件描述符 。

    • 文件描述符fd只是一个非负整数,在open时产生,起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针file。
    • open函数返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表,所有打开的文件都将通过此表中的文件描述符来引用;
    • fopen函数返回的是一个文件指针(FILE*),FILE结构是包含有文件描述符的,fopen可以看做是open(fd直接操作的系统调用)的封装,它的优点是带有I/O缓存
  • 相关阅读:
    makeObjectsPerformSelector 方法的用法
    UISearchBar控件
    iOS应用崩溃日志分析
    IOS崩溃日志分析
    iOS 中捕获程序崩溃日志
    iOS疯狂详解之imageIO完成渐进加载图片
    iOS中nil,NULL,Nil,NSNull的区别
    IOS 8 UITableView cell lines不能靠左解决方法
    Android小玩意儿-- 从头开发一个正经的MusicPlayer(三)
    Android小玩意儿-- 从头开发一个正经的MusicPlayer(二)
  • 原文地址:https://www.cnblogs.com/chay/p/10794667.html
Copyright © 2020-2023  润新知