1.系统IO操作文件时是无缓冲输入,一般用于操作字符设备文件(LCD, LED, BEEP ...,数据需要实时刷新)
标准IO操作文件时是有缓冲输入,一般用于操作普通文件(.txt, .jpg...)
其缓冲机制可分3类:全缓冲, 行缓存,无缓冲
全缓冲:填满标准I/O缓存区才进行实际的I/O操作。(fwrite/fread)
行缓存:当在遇到换行符或者缓冲区满时,标准IO库执行IO系统调用操作(printf)
无缓冲:标准I/O库不对字符进行缓冲存储 (标准出错 stderr)
系统IO不带有缓冲机制,直接对实际文件进行操作,需要手动刷新缓冲区,坏处是会频繁调用系统资源。 标准IO先将数据写入缓冲区,系统会自动刷新缓冲区,一次性将写入数据传给内核,从而减少系统开销。在实际开发中标准IO更容易使用。
2.系统IO是Linux操作系统提供函数接口
标准IO标准C语言库函数提供的
系统IO的API接口有:open read write close lseek .....
标准IO的API接口有:fopen fread fwrite fclose ftell ferror feof .....
标准IO本质还是调用了系统IO,只是标准IO是通过系统IO进行封装给用户使用。