文件描述符与文件指针

高级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;
}

原文地址:https://www.cnblogs.com/wsw-seu/p/8280356.html