当前位置: 技术问答>linux和unix
open和fopen的区别?
来源: 互联网 发布时间:2015-12-11
本文导语: 如题,看到好多调用设备文件的程序都是用的open函数,难道用fopen不可以吗? 主要求高手谈谈这两个函数的区别,以及具体在什么时候该用哪个函数? | 文件描述符是linux下的一个概念,linux下...
如题,看到好多调用设备文件的程序都是用的open函数,难道用fopen不可以吗?
主要求高手谈谈这两个函数的区别,以及具体在什么时候该用哪个函数?
主要求高手谈谈这两个函数的区别,以及具体在什么时候该用哪个函数?
|
文件描述符是linux下的一个概念,linux下的一切设备都是以文件的形式操作.如网络套接字、硬件设备等。当然包括操作文件。
fopen是标准c函数。返回文件流而不是linux下文件句柄。
fopen是标准c函数。返回文件流而不是linux下文件句柄。
|
我认为fopen和open最主要的区别是fopen在用户态下就有了缓存,在进行read和write的时候减少了用户态和内核态的切换,而open则每次都需要进行内核态和用户态的切换;表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比fopen快。
|
fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api
linux中的系统函数是open,fopen是其封装函数,个人观点。仅供参考。
linux中的系统函数是open,fopen是其封装函数,个人观点。仅供参考。
|
设备文件不可以当成流式文件来用,只能用open
fopen是用来操纵正规文件的,并且设有缓冲的,跟open还是有一些区别
fopen是用来操纵正规文件的,并且设有缓冲的,跟open还是有一些区别
|
一般用fopen打开普通文件,用open打开设备文件
|
fopen是标准c里的,而open是linux的系统调用.
他们的层次不同.
fopen可移植,open不能
他们的层次不同.
fopen可移植,open不能