zoukankan      html  css  js  c++  java
  • 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缓存
  • 相关阅读:
    centos7中如何让网卡名不被改变
    设置git使用vim作为编辑器
    vim复制时保留原有格式
    Linux添加自定义命令方法
    从graphite中删除字段信息
    jquery图片上传新思路
    注册代码
    JQ基本和层级选择器-p9-09
    DOM对象和JQ对象相互转换
    DOM对象和JQuery对象
  • 原文地址:https://www.cnblogs.com/chay/p/10794667.html
Copyright © 2011-2022 走看看