• 文件描述符与文件指针


    高级IO:ANSI C提供的标准IO,通常也称为带缓冲的IO

    低级IO:通常也称为不带缓冲的IO

    文件描述符:

      对于LINUX而言对所有设备或文件的操作都是通过文件描述符进行的。当打开一个文件的时候内核向进程返回一个文件描述符(非负)。后续对文件的操作只需要通过该文件描述符,

    内核记录有这个打开文件的信息。一个进程启动时,默认打开了三个文件,标准输入、标准输出、标准错误,对应文件描述符是0(STDIN_FILENO),1(STDOUT_FILENO),2(STDERR_FILENO),这些常量定义在unistd.h头文件中。

    文件指针:

      在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。例如:FILE *fp;

    表示fp是指向FILE结构的指针变量,通过fp即可找存放某个文件信息的结构变量,然后按结构变量提供的信息找到该文件,实施对文件的操作。习惯上也笼统地把fp称为指向一个文件的指针。

    /*
    FILE* fp       int(fd)
    stdin          STDIN_FILENO
    stdout         STDOUT_FILENO
    stderr         STDERR_FILENO
    文件指针和文件描述符的转换:
    fileno:将文件指针转换为文件描述符  int fileno(FILE *stream);
    fdopen:将文件描述符转换为文件指针   FILE *fdopen(int fd, const char *mode);
    */
    #include<stdlib.h>
    #include<stdio.h>
    int main()
    {
        printf("fileno(stdin)=%d ",fileno(stdin));
        return 0;
    }

  • 相关阅读:
    struct{} //长篇更新
    channel //长篇更新
    切片 //长篇更新
    引用
    核心:数据篇
    ARM指令解析
    arm寄存器解析
    Java-Selenium,获取下拉框中的每个选项的值,并随机选择某个选项
    log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
    eclipse安装springsource-tool-suite遇到的问题及解决方案
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/8280356.html
Copyright © 2020-2023  润新知