文件IO(系统IO和标准IO)

Linux系统下操作文件有两类基本API,一类由系统调用提供,被称为系统IO。一类由标准C库提供,被称为标准IO。

 

拓展:

它们都是Linux下操作文件的标准接口,那又有什么区别?我们该如何选择使用呢?

第一:系统IO是更底层的接口,因此任何设备和文件最终都是可以通过系统IO来操作。系统IO不提供缓冲区,意味着每次读写都必须进入内核,对于大数据量的读写操作会影响效率。

第二:标准IO是由标准库提供的接口,因此功能更加丰富,而且标准IO提供缓冲区,增加数据处理的吞吐量。标准IO还对读写操作提供更加丰富的操作方式,例如按字节、按行、按块、按数据格式读写。但是有些特殊文件无法使用标准IO,比如socket套接口,比如LCD显示屏。

第三:在能使用标准IO的场合,我们尽量使用它,毕竟它功能丰富效率高,但在无法使用标准IO的场合,我们还是只能用系统IO。

第四:所谓的系统IO,就是指这样的一堆函数:

open()

read()

wirte()

lseek()

ioctl()

close()

等等

所谓的标准IO,指的是这一堆函数:

fopen()

fgets()

fread()

scanf()

getchar()

fputs()

fwrite()

printf()

fseek()

fclose()

等等。

你可能感兴趣的:(技术栈)