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