当前位置: 技术问答>linux和unix
read()和fread()
来源: 互联网 发布时间:2016-08-09
本文导语: fread()等函数是属于C标准库函数,而read()等是系统提供的函数 怎么理解阿?好像read()也是C库中的函数阿? fread()最终是调用read()进行IO读,而read()是直接调用系统内核函数? 为什么又说read()是系统提供的函数? 谢谢...
fread()等函数是属于C标准库函数,而read()等是系统提供的函数
怎么理解阿?好像read()也是C库中的函数阿?
fread()最终是调用read()进行IO读,而read()是直接调用系统内核函数?
为什么又说read()是系统提供的函数?
谢谢
怎么理解阿?好像read()也是C库中的函数阿?
fread()最终是调用read()进行IO读,而read()是直接调用系统内核函数?
为什么又说read()是系统提供的函数?
谢谢
|
这里有两个概念,一个是系统调用,一个是标准库函数。前者是通过函数调用,使操作系统内核工作,比如读写文件,是由操作系统实现的所有系统调用所构成的集合即程序接口或应用编程接口(Application Programming Interface,API)。是应用程序同系统之间的接口。一般遵循POSIX标准。
标准库函数是C语言标准(比如ANSI C)规定的C语言必须支持的函数。在任何C语言编绎环境中都需要支持的,比如fread在VC、gcc、bcb、TC中都会支持。但不同的编译平台或操作系统实现机理不同,在Windows下一般通过封装Win32 API实现(可以理解为Windows的系统调用),在Linux或其它类UNIX系统中一般通过系统调用实现。
标准库函数是C语言标准(比如ANSI C)规定的C语言必须支持的函数。在任何C语言编绎环境中都需要支持的,比如fread在VC、gcc、bcb、TC中都会支持。但不同的编译平台或操作系统实现机理不同,在Windows下一般通过封装Win32 API实现(可以理解为Windows的系统调用),在Linux或其它类UNIX系统中一般通过系统调用实现。
|
系统不提供,用户怎么用呢?
read应该不在C标准库里,这个是很底层的一个io操作。
fread是C标准库里定义的这么一个函数,在read上还实现了缓冲等机制。
read应该不在C标准库里,这个是很底层的一个io操作。
fread是C标准库里定义的这么一个函数,在read上还实现了缓冲等机制。
|
read不是在c标准库里
read的头文件是#include
#include
#include
而fread的头文件是#include
read的头文件是#include
#include
#include
而fread的头文件是#include
|
fread是各种操作系统都有的,而且用法都一样。
read就不同了,一般linux/unix都有,但是好像windows就没有
read就不同了,一般linux/unix都有,但是好像windows就没有
|
read是系统底层的东东,fread是C标准库的东东
标准库里的函数肯定是要调用底层的系统函数才能实现功能的
标准库里的函数肯定是要调用底层的系统函数才能实现功能的
|