系统调用I/O与基于流的I/O
区别:
- 基于流的文件操作函数的名字都是以字母f开头,而系统调用函数则不同。例如流函数fopen()对应于系统调用的open().
- 系统调用I/O方法是更低一级的接口,通常完成相同的任务,比使用基于流的I/O方法需要更多编码的工作量。
- 系统调用直接处理文件描述符,而流函数则处理FILE*类型的文件句柄。
4.基于流的I/O方法是对系统调用方法的封装,流I/O方法使用自动缓冲技术,使程序能减少系统调用,从而提高程序的性能。 - 基于流的I/O方法可以支持格式化输出,比如fprintf()函数。
6.基于流的I/O替用户处理有关系统调用的细节,比如系统调用被信号终端的处理等等。
基于流的I/O方法显然给程序员提供了极大的方便,但是某些程序却不能使用基于流的I/O方法。比如使用缓冲技术使得网络通信陷入困境,因为它将干扰网络通讯所使用的通信协议。考虑到这两种I/O方法的不同,在使用终端或者通过文件交换信息时,通常采用基于流的I/O方法。而使用网络或者管道通信时,通常采用系统调用的I/O方法。
就目前所学,文件访问要特别注意文件的打开方式和文件指针的位置。
网友评论