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()
主动刷新!!!
网友评论