1、fopen和open区别
1 前者属于低级IO,后者是高级IO。 2 前者返回一个文件描述符,后者返回一个文件指针。 3 前者无缓冲,后者有缓冲。 4 前者与 read, write 等配合使用, 后者与 fread, fwrite等配合使用。 5 后者是在前者的基础上扩充而来的,在大多数情况下,用后者。 6 7 1.open 是系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的库函数,返回的是一个指向文件结构的指针。 8 2.fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api 9 3.fopen是标准c函数。返回文件流而不是linux下文件句柄。设备文件不可以当成流式文件来用,只能用open 10 4.fopen是用来操纵正规文件的,并且设有缓冲的,跟open还是有一些区别 11 5.一般用fopen打开普通文件,用open打开设备文件 12 6.fopen是标准c里的,而open是linux的系统调用. 13 7.他们的层次不同. 14 8.fopen可移植,open不能 15 9.我认为fopen和open最主要的区别是fopen在用户态下就有了缓存,在进行read和write的时候减少了用户态和内核态的切换,而open则每次都需要进行内核态和用户态的切换;表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比fopen快。
时间: 2024-11-10 14:51:03