Linux中open與fopen區別主要體現在哪些方面?

老男孩IT教育機構發表於2022-07-20

  在學習Linux的時候,不少小夥伴應該都接觸過open與fopen,因為只有一個字母之差,所以很多人經常會將它們混淆在一起,那麼Linux中open與fopen區別是什麼?具體請看下文。

  1、來源

  從來源的角度看,兩者能很好的區分開,這也是最顯而易見的區別:

  ①open是Unix系統呼叫函式,返回的是檔案描述符,它是檔案在檔案描述符表裡的索引;

  ②fopen是ANSIC標準中的C語言庫函式,在不同的系統中應該呼叫不同的核心api。返回的是一個指向檔案結構的指標。

  2、移植性

  這一點從上面的來源可以推斷出來,fopen是C標準函式,因此擁有良好的移植性,而open是Unix系統呼叫,移植性有限。如Windows下相似的功能使用API函式CreateFile。

  3、適用範圍

  ①open返回檔案描述符,而檔案描述符是Unix系統下的一個重要概念,Unix下的一切裝置都是以檔案的形式操作。如網路套接字、硬體裝置等。當然包括操作普通正規檔案。

  ②fopen是用來操縱普通正規檔案。

  4、檔案IO層次

  如果從檔案IO的角度來看,前者屬於低階IO函式,後者屬於高階IO函式。低階和高階的簡單區分標準是:誰離系統核心更近。低階檔案IO執行在核心態,高階檔案IO執行在使用者態。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2906694/,如需轉載,請註明出處,否則將追究法律責任。

相關文章