open与fopen的区别
open 是内核的封装函数 供给应用层调用 是内核独有的函数 不支持跨平台 与 read, write 等配合使用 open是系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引
fopen 是C的库函数,返回的是一个指向文件结构的指针。 与 fread, fwrite等配合使用 可以移植 fopen 不能对Linux驱动进行操作 可以在应用层进行文件操作
那么我们在linux中 打开一项设备用open 就很好解释了 我们驱动是向系统注册的设备,需要使用系统调用函数open 而不是c 库函数fopen 简而言之 用户态通过系统调用 陷入内核态的
正如 fd = open("/dev/xyz", O_RDWR); 如果换成 fd = fopen("/dev/xyz", "r+"); 编译是不会报错的 但是执行时不会对xyz设备进行操作。