open和fopen的區別
1、來源不同
open是unix系統調用函數(包括Linux),返回的是文件描述符,它是文件描述符表裏的索引。
fopen是ANSIC標準中的C語言庫函數,在不同的系統中應該調不同的內核api,返回的是一個指向文件結構的指針。
2、移植性
從來源看,fopen是C標準函數,因此擁有良好的移植性,而open是unix系統調用,移植性有限,如windows下相似的功能使用api函數CreatFile。
3、使用範圍
open返回文件描述符,而文件描述符是unnix系統下的重要概念,unix下的一切設備都是文件的形式操作,如網絡套接字、硬件設備等、當然包括操作普通正規文件(Regular File)
Fopen是從來操縱普通正規文件(Regular File)的
4、 文件IO層次
如果從文件IO的角度來看,open屬於低級IO函數,fopen屬於高級IO函數,低級和高級的簡單區分標準是:誰離系統內核更近,低級文件IO運行在內核態、高級文件IO運行在用户態。
5、 緩衝區
open沒緩衝區,fopen有緩衝區