Linux中open與fopen區別主要體現在哪些方面?
在學習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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C中的open(), write(), close(), fopen()
- Linux中rmdir和rm命令的主要區別!Linux
- 在Linux中,開源軟體和自由軟體的區別?Linux
- 在Linux中,Linux核心和Shell有何區別?Linux
- cookie與session的區別以及在Django中的實現CookieSessionDjango
- 在Linux中,Jail和Chroot有何區別?LinuxAI
- Linux系統中bin和sbin目錄的主要區別!Linux
- 5個macOS 和 Linux的主要區別MacLinux
- Linux中檔案與目錄的區別Linux
- 在Linux中,umask 和 ulimit有什麼區別?LinuxMIT
- 31.提示錯誤fopen_means Too many open files
- 在Linux中,tomcat和nginx的區別是什麼?LinuxTomcatNginx
- SOCKS代理與HTTP代理主要區別分析HTTP
- HTTP代理與SOCKS代理的主要區別HTTP
- Linux中“>”和“>>”的區別Linux
- 在Linux中,發行版和核心有什麼區別?Linux
- Linux中wget、yum與apt-get用法及區別Linuxwgetapt-get
- Linux中的管道是什麼?管道與共享記憶體的區別有哪些?Linux記憶體
- 在JavaScript中,DOM物件與jQuery物件的區別與轉換JavaScript物件jQuery
- Linux open file與 fs-maxLinux
- 在Linux中,BASH 和 DOS之間的區別是什麼?Linux
- Linux系統中rpm與yum的區別是什麼?Linux
- 【Linux】Docker主要優勢是什麼?與虛擬機器區別是什麼?LinuxDocker虛擬機
- 【Linux學習教程】Linux中tcp與tcp6區別是什麼?LinuxTCP
- 雲解析DNS的安全性主要體現在哪些方面?(中科三方)DNS
- XML和HTML的主要區別、 jQuery 能做什麼?JavaScript中的“=、==、===”區別?XMLHTMLjQueryJavaScript
- 動態IP與靜態IP的主要區別
- Javascript中“==”與“===”的區別JavaScript
- Python中 ‘==‘ 與‘is‘的區別Python
- Linux的優缺點,Linux與windows的區別LinuxWindows
- Linux中什麼是打包?與歸檔有什麼區別?Linux
- 在資料庫的查詢與更新中,CHARINDEX與instr的區別?資料庫Index
- Linux程式與執行緒的區別Linux執行緒
- Linux執行緒與程式的區別Linux執行緒
- 耦合與聚合的區別比單體與微服務區別更重要微服務
- HashMap底層實現原理/HashMap與HashTable區別/HashMap與HashSet區別HashMap
- 在 JavaScript 中,exec() 和 match() 區別JavaScript
- 在Linux中,RAID級別有哪些?LinuxAI