日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

open-fopen read-fread等的不同 .

發布時間:2024/1/23 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 open-fopen read-fread等的不同 . 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
open和fopen的區別:
1.緩沖文件系統
緩沖文件系統的特點是:在內存開辟一個“緩沖區”,為程序中的每一個文件使用,當執行讀文件的操作時,從磁盤文件將數據先讀入內存“緩沖區”,裝滿后再從內存“緩沖區”依此讀入接收的變量。執行寫文件的操作時,先將數據寫入內存“緩沖區”,待內存“緩沖區”裝滿后再寫入文件。由此可以看出,內存 “緩沖區”的大小,影響著實際操作外存的次數,內存“緩沖區”越大,則操作外存的次數就少,執行速度就快、效率高。一般來說,文件“緩沖區”的大小隨機器而定。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等是帶緩沖的。

2.非緩沖文件系統
緩沖文件系統是借助文件結構體指針來對文件進行管理,通過文件指針來對文件進行訪問,既可以讀寫字符、字符串、格式化數據,也可以讀寫二進制數據。非緩沖文件系統依賴于操作系統,通過操作系統的功能對文件進行讀寫,是系統級的輸入輸出,它不設文件結構體指針,只能讀寫二進制文件,但效率高、速度快,由于ANSI標準不再包括非緩沖文件系統,因此建議大家最好不要選擇它。本書只作簡單介紹。
open, close, read, write, getc, getchar, putc, putchar 等是不帶緩沖的。

前者帶f的屬于高級IO,后者是低級IO。
前者返回一個文件指針,后者返回一個文件描述符(用戶程序區的)。
前者有緩沖,后者無緩沖。
高級IO是在低級IO的基礎上擴充而來的,在大多數情況下,使用高級IO。

http://blog.chinaunix.net/u/21067/showart_213410.html
open 是系統調用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,
fopen是C的庫函數,返回的是一個指向文件結構的指針。

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

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

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

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

網友認為fopen和open最主要的區別是fopen在用戶態下就有了緩存,在進行read和write的時候減少了用戶態和內核態的切換,而open則每次都需要進行內核態和用戶態的切換;
表現為,如果順序訪問文件,fopen系列的函數要比直接調用open系列快;如果隨機訪問文件open要比 fopen快。
轉自:
http://blog.csdn.net/hairetz/archive/2009/05/05/4150193.aspx

==============================================================

? 1,fread是帶緩沖的,read不帶緩沖.?
? 2,fopen是標準c里定義的,open是POSIX中定義的.?
? 3,fread可以讀一個結構.read在linux/unix中讀二進制與普通文件沒有區別.?
? 4,fopen不能指定要創建文件的權限.open可以指定權限.?
? 5,fopen返回指針,open返回文件描述符(整數).?
? 6,linux/unix中任何設備都是文件,都可以用open?? ,read.

==============================================================

《C專家編程》說主要是涉及到系統。
區別不是緩沖,帶f的是標準IO,代碼可以移植,不帶f只能在UNIX/LINUX系統調用。?
一個是整數,一個是指針。

總結

以上是生活随笔為你收集整理的open-fopen read-fread等的不同 .的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。