fopen與Open區別

open和fopen的區別

open 是系統調用 返回的是文件句柄,文件的句柄是文件在文件描述副表裏的索引,fopen是C的庫函數,返回的是一個指向文件結構的指針。

文件描述符是linux下的一個概念,linux下的一切設備都是以文件的形式操作.如網絡套接字、硬件設備等。當然包括操作文件。fopen是標準c函數。返回文件流而不是linux下文件句柄。

設備文件不可以當成流式文件來用,只能用openfopen是用來操縱正規文件的,並且設有緩衝的,跟open還是有一些區別

一般用fopen打開普通文件,用open打開設備文件

fopen是標準c裏的,而open是linux的系統調用.他們的層次不同.fopen可移植,open不能


我認爲fopen和open最主要的區別是fopen在用戶態下就有了緩存,在進行read和write的時候減少了用戶態和內核態的切換,而open則每次都需要進行內核態和用戶態的切換;表現爲,如果順序訪問文件,fopen系列的函數要比直接調用open系列快;如果隨機訪問文件open要比fopen快。

文件流指針可以通過fileno函數轉換成文件句柄。

對文件操作可以直接使用fopen,在用fgetc或者fgets,fread來操作文件,個人更喜歡把文件通過mmap映射到內存上(驅動的方法),在使用內存相關的函數,這樣方便一點。


摘自論壇的經典回答:
前者屬於低級IO,後者是高級IO。
前者返回一個文件描述符(用戶程序區的),後者返回一個文件指針。
前者無緩衝,後者有緩衝。
前者與 read, write 等配合使用, 後者與 fread, fwrite等配合使用。
後者是在前者的基礎上擴充而來的,在大多數情況下,用後者。


exit 和return 的區別

exit用於在程序運行的過程中隨時結束程序,exit的參數是返回給OS的。

return是語言級別的,它表示了調用堆棧的返回;而exit是系統調用級別的,它表示了一個進程的結束。

C庫函數大全網站:http://www.cplusplus.com/reference/cstdio/scanf/
————————————————
版權聲明:本文爲CSDN博主「fzjcycp」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u014379540/article/details/52388804

發佈了4 篇原創文章 · 獲贊 167 · 訪問量 60萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章