一直对此感到困惑,今天在网上搜了下,进行下总结。
返回值:
open返回文件描述符,是linux下的一个概念,linux下的一切设备都是以文件的形式操作.如网络套接字、硬件设备等。当然包括操作文件。
fopen是标准c函数。返回文件流而不是linux下文件句柄。
作用:
fopen和open最主要的区别是fopen在用户态下就有了缓存,在进行read和write的时候减少了用户态和内核态的切换,而open则每次都需要进行内核态和用户态的切换;表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比fopen快。
fopen是标准c里的,而open是linux的系统调用. 他们的层次不同. 设备文件不可以当成流式文件来用,只能用open
一般用fopen打开普通文件,用open打开设备文件 ,一般情况下fopen可移植,open不能