open是Linux下的底层系统调用函数,fopen是C/C++下的标准I/O库函数,带输入/输出缓冲。
Linux下的fopen是open的封装函数,fopen最终还是要调用底层的系统调用open。
所以在Linux下如果对设备进行明确的控制,最好使用底层系统调用(open)。
open对应的文件操作有:close, read, write,ioctl 等。
fopen 对应的文件操作有:fclose, fread, fwrite, freopen, fseek, ftell, rewind等。
open与fopen的区别:
fread是带缓冲的,read是不带缓冲的;
fopen是标准C里面定义的,open是POSIX中定义的;
fread可以读一个结构,read在Linux/Unix中读二进制与普通文件没有区别;
fopen不能指定要创建文件的权限,open可以指定;
fopen返回文件指针,open返回文件描述符(整数);
Linux/Unix中任何设备都是文件,都可以使用read/open;