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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python fopen,open,和popen的區別Python
- C中的open(), write(), close(), fopen()
- Java中Array與ArrayList的主要區別Java
- Linux中rmdir和rm命令的主要區別!Linux
- 在Linux中,開源軟體和自由軟體的區別?Linux
- cookie與session的區別以及在Django中的實現CookieSessionDjango
- Linux free中buffer與cache區別Linux
- linux中fork()與vfork()的區別Linux
- Linux系統中bin和sbin目錄的主要區別!Linux
- 在Linux中,Linux核心和Shell有何區別?Linux
- linux shell 中 printf 與 echo的區別Linux
- 在Linux中,Jail和Chroot有何區別?LinuxAI
- SOCKS代理與HTTP代理主要區別分析HTTP
- HTTP代理與SOCKS代理的主要區別HTTP
- MPS與MRP的主要區別
- 5個macOS 和 Linux的主要區別MacLinux
- Linux中檔案與目錄的區別Linux
- 在Linux中,umask 和 ulimit有什麼區別?LinuxMIT
- rs.open與connection.execute(sql)的區別SQL
- C++中結構體與類的區別C++結構體
- 在JavaScript中,DOM物件與jQuery物件的區別與轉換JavaScript物件jQuery
- 在關聯子查詢中in與exists的區別
- order by在SQL Server與Oracle中的一個區別SQLServerOracle
- 雲解析DNS的安全性主要體現在哪些方面?(中科三方)DNS
- linux 指令碼 for 與while實際中的區別Linux指令碼While
- XML和HTML的主要區別、 jQuery 能做什麼?JavaScript中的“=、==、===”區別?XMLHTMLjQueryJavaScript
- Javascript中“==”與“===”的區別JavaScript
- js中“==”與"==="的區別JS
- 動態IP與靜態IP的主要區別
- Linux中“>”和“>>”的區別Linux
- delphi open arrays和dynamic arrays區別
- 請問: 在Struts中 ActionFrom vs DynaActionForm 的區別與用法?ORM
- 在Linux中,tomcat和nginx的區別是什麼?LinuxTomcatNginx
- 在Linux中,發行版和核心有什麼區別?Linux
- Linux中的管道是什麼?管道與共享記憶體的區別有哪些?Linux記憶體
- 常用JFC主要區別梳理
- linux cache與buffer的區別Linux
- 認識Linux與Unix區別Linux