open-fopen read-fread等的不同 .
生活随笔
收集整理的這篇文章主要介紹了
open-fopen read-fread等的不同 .
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
open和fopen的區(qū)別:
1.緩沖文件系統(tǒng)
緩沖文件系統(tǒng)的特點(diǎn)是:在內(nèi)存開(kāi)辟一個(gè)“緩沖區(qū)”,為程序中的每一個(gè)文件使用,當(dāng)執(zhí)行讀文件的操作時(shí),從磁盤(pán)文件將數(shù)據(jù)先讀入內(nèi)存“緩沖區(qū)”,裝滿后再?gòu)膬?nèi)存“緩沖區(qū)”依此讀入接收的變量。執(zhí)行寫(xiě)文件的操作時(shí),先將數(shù)據(jù)寫(xiě)入內(nèi)存“緩沖區(qū)”,待內(nèi)存“緩沖區(qū)”裝滿后再寫(xiě)入文件。由此可以看出,內(nèi)存 “緩沖區(qū)”的大小,影響著實(shí)際操作外存的次數(shù),內(nèi)存“緩沖區(qū)”越大,則操作外存的次數(shù)就少,執(zhí)行速度就快、效率高。一般來(lái)說(shuō),文件“緩沖區(qū)”的大小隨機(jī)器而定。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等是帶緩沖的。
2.非緩沖文件系統(tǒng)
緩沖文件系統(tǒng)是借助文件結(jié)構(gòu)體指針來(lái)對(duì)文件進(jìn)行管理,通過(guò)文件指針來(lái)對(duì)文件進(jìn)行訪問(wèn),既可以讀寫(xiě)字符、字符串、格式化數(shù)據(jù),也可以讀寫(xiě)二進(jìn)制數(shù)據(jù)。非緩沖文件系統(tǒng)依賴于操作系統(tǒng),通過(guò)操作系統(tǒng)的功能對(duì)文件進(jìn)行讀寫(xiě),是系統(tǒng)級(jí)的輸入輸出,它不設(shè)文件結(jié)構(gòu)體指針,只能讀寫(xiě)二進(jìn)制文件,但效率高、速度快,由于ANSI標(biāo)準(zhǔn)不再包括非緩沖文件系統(tǒng),因此建議大家最好不要選擇它。本書(shū)只作簡(jiǎn)單介紹。
open, close, read, write, getc, getchar, putc, putchar 等是不帶緩沖的。
前者帶f的屬于高級(jí)IO,后者是低級(jí)IO。
前者返回一個(gè)文件指針,后者返回一個(gè)文件描述符(用戶程序區(qū)的)。
前者有緩沖,后者無(wú)緩沖。
高級(jí)IO是在低級(jí)IO的基礎(chǔ)上擴(kuò)充而來(lái)的,在大多數(shù)情況下,使用高級(jí)IO。
http://blog.chinaunix.net/u/21067/showart_213410.html
open 是系統(tǒng)調(diào)用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,
fopen是C的庫(kù)函數(shù),返回的是一個(gè)指向文件結(jié)構(gòu)的指針。
文件描述符是linux下的一個(gè)概念,linux下的一切設(shè)備都是以文件的形式操作.如網(wǎng)絡(luò)套接字、硬件設(shè)備等。當(dāng)然包括操作文件。
fopen是標(biāo)準(zhǔn)c函數(shù)。返回文件流而不是linux下文件句柄。
設(shè)備文件不可以當(dāng)成流式文件來(lái)用,只能用open。
fopen是用來(lái)操縱正規(guī)文件的,并且設(shè)有緩沖的,跟open還是有一些區(qū)別。
一般用fopen打開(kāi)普通文件,用open打開(kāi)設(shè)備文件。
fopen是標(biāo)準(zhǔn)c里的,而open是linux的系統(tǒng)調(diào)用,他們的層次不同。
fopen可移植,open不能。
網(wǎng)友認(rèn)為fopen和open最主要的區(qū)別是fopen在用戶態(tài)下就有了緩存,在進(jìn)行read和write的時(shí)候減少了用戶態(tài)和內(nèi)核態(tài)的切換,而open則每次都需要進(jìn)行內(nèi)核態(tài)和用戶態(tài)的切換;
表現(xiàn)為,如果順序訪問(wèn)文件,fopen系列的函數(shù)要比直接調(diào)用open系列快;如果隨機(jī)訪問(wèn)文件open要比 fopen快。
轉(zhuǎn)自:
http://blog.csdn.net/hairetz/archive/2009/05/05/4150193.aspx
==============================================================
? 1,fread是帶緩沖的,read不帶緩沖.?
? 2,fopen是標(biāo)準(zhǔn)c里定義的,open是POSIX中定義的.?
? 3,fread可以讀一個(gè)結(jié)構(gòu).read在linux/unix中讀二進(jìn)制與普通文件沒(méi)有區(qū)別.?
? 4,fopen不能指定要?jiǎng)?chuàng)建文件的權(quán)限.open可以指定權(quán)限.?
? 5,fopen返回指針,open返回文件描述符(整數(shù)).?
? 6,linux/unix中任何設(shè)備都是文件,都可以用open?? ,read.
==============================================================
《C專家編程》說(shuō)主要是涉及到系統(tǒng)。
區(qū)別不是緩沖,帶f的是標(biāo)準(zhǔn)IO,代碼可以移植,不帶f只能在UNIX/LINUX系統(tǒng)調(diào)用。?
一個(gè)是整數(shù),一個(gè)是指針。
1.緩沖文件系統(tǒng)
緩沖文件系統(tǒng)的特點(diǎn)是:在內(nèi)存開(kāi)辟一個(gè)“緩沖區(qū)”,為程序中的每一個(gè)文件使用,當(dāng)執(zhí)行讀文件的操作時(shí),從磁盤(pán)文件將數(shù)據(jù)先讀入內(nèi)存“緩沖區(qū)”,裝滿后再?gòu)膬?nèi)存“緩沖區(qū)”依此讀入接收的變量。執(zhí)行寫(xiě)文件的操作時(shí),先將數(shù)據(jù)寫(xiě)入內(nèi)存“緩沖區(qū)”,待內(nèi)存“緩沖區(qū)”裝滿后再寫(xiě)入文件。由此可以看出,內(nèi)存 “緩沖區(qū)”的大小,影響著實(shí)際操作外存的次數(shù),內(nèi)存“緩沖區(qū)”越大,則操作外存的次數(shù)就少,執(zhí)行速度就快、效率高。一般來(lái)說(shuō),文件“緩沖區(qū)”的大小隨機(jī)器而定。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等是帶緩沖的。
2.非緩沖文件系統(tǒng)
緩沖文件系統(tǒng)是借助文件結(jié)構(gòu)體指針來(lái)對(duì)文件進(jìn)行管理,通過(guò)文件指針來(lái)對(duì)文件進(jìn)行訪問(wèn),既可以讀寫(xiě)字符、字符串、格式化數(shù)據(jù),也可以讀寫(xiě)二進(jìn)制數(shù)據(jù)。非緩沖文件系統(tǒng)依賴于操作系統(tǒng),通過(guò)操作系統(tǒng)的功能對(duì)文件進(jìn)行讀寫(xiě),是系統(tǒng)級(jí)的輸入輸出,它不設(shè)文件結(jié)構(gòu)體指針,只能讀寫(xiě)二進(jìn)制文件,但效率高、速度快,由于ANSI標(biāo)準(zhǔn)不再包括非緩沖文件系統(tǒng),因此建議大家最好不要選擇它。本書(shū)只作簡(jiǎn)單介紹。
open, close, read, write, getc, getchar, putc, putchar 等是不帶緩沖的。
前者帶f的屬于高級(jí)IO,后者是低級(jí)IO。
前者返回一個(gè)文件指針,后者返回一個(gè)文件描述符(用戶程序區(qū)的)。
前者有緩沖,后者無(wú)緩沖。
高級(jí)IO是在低級(jí)IO的基礎(chǔ)上擴(kuò)充而來(lái)的,在大多數(shù)情況下,使用高級(jí)IO。
http://blog.chinaunix.net/u/21067/showart_213410.html
open 是系統(tǒng)調(diào)用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,
fopen是C的庫(kù)函數(shù),返回的是一個(gè)指向文件結(jié)構(gòu)的指針。
文件描述符是linux下的一個(gè)概念,linux下的一切設(shè)備都是以文件的形式操作.如網(wǎng)絡(luò)套接字、硬件設(shè)備等。當(dāng)然包括操作文件。
fopen是標(biāo)準(zhǔn)c函數(shù)。返回文件流而不是linux下文件句柄。
設(shè)備文件不可以當(dāng)成流式文件來(lái)用,只能用open。
fopen是用來(lái)操縱正規(guī)文件的,并且設(shè)有緩沖的,跟open還是有一些區(qū)別。
一般用fopen打開(kāi)普通文件,用open打開(kāi)設(shè)備文件。
fopen是標(biāo)準(zhǔn)c里的,而open是linux的系統(tǒng)調(diào)用,他們的層次不同。
fopen可移植,open不能。
網(wǎng)友認(rèn)為fopen和open最主要的區(qū)別是fopen在用戶態(tài)下就有了緩存,在進(jìn)行read和write的時(shí)候減少了用戶態(tài)和內(nèi)核態(tài)的切換,而open則每次都需要進(jìn)行內(nèi)核態(tài)和用戶態(tài)的切換;
表現(xiàn)為,如果順序訪問(wèn)文件,fopen系列的函數(shù)要比直接調(diào)用open系列快;如果隨機(jī)訪問(wèn)文件open要比 fopen快。
轉(zhuǎn)自:
http://blog.csdn.net/hairetz/archive/2009/05/05/4150193.aspx
==============================================================
? 1,fread是帶緩沖的,read不帶緩沖.?
? 2,fopen是標(biāo)準(zhǔn)c里定義的,open是POSIX中定義的.?
? 3,fread可以讀一個(gè)結(jié)構(gòu).read在linux/unix中讀二進(jìn)制與普通文件沒(méi)有區(qū)別.?
? 4,fopen不能指定要?jiǎng)?chuàng)建文件的權(quán)限.open可以指定權(quán)限.?
? 5,fopen返回指針,open返回文件描述符(整數(shù)).?
? 6,linux/unix中任何設(shè)備都是文件,都可以用open?? ,read.
==============================================================
《C專家編程》說(shuō)主要是涉及到系統(tǒng)。
區(qū)別不是緩沖,帶f的是標(biāo)準(zhǔn)IO,代碼可以移植,不帶f只能在UNIX/LINUX系統(tǒng)調(diào)用。?
一個(gè)是整數(shù),一個(gè)是指針。
總結(jié)
以上是生活随笔為你收集整理的open-fopen read-fread等的不同 .的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: #ifndef #define #end
- 下一篇: 编写字符串反转函数 .