Linux中库函数和系统API,以及FILE*和文件描述符fd
标准IO,定义在<stdio.h>中, 例如:
-
stdin,stdout, 他们的类型是FIlE * - 相关的API是
fopen,fwrite,fread,fclose等, 都是以f开头. - 我们常用的
prinf,fprintf,fget,fput也是标准IO.
系统调用,定义在<unistd.h>中, 例如:
-
STDIN_FILENO,STDOUT_FILENO类型是int - 相关API是
open,read,write,close等
我们可以通过fileno()获取文件指针FILE*指定文件流所使用的文件描述符
例如:
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("%d \n",fileno(stdin)); //0
printf("%d \n",fileno(stdout)); //1
printf("%d \n",fileno(stderr)); //2
return 0;
}
一般我们使用<stdio.h>中的标准IO函数进行打印 -- printf().
实际在linux的底层实现中也只是用的buf + write实现的, 如果我们想要printf函数立即打印,我们可以手动调用fflush()主动刷新!!!












网友评论