亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 8729 | 回復(fù): 16
打印 上一主題 下一主題

open與fopen的區(qū)別 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-07-19 16:07 |只看該作者 |倒序瀏覽

今天看了半天還是不懂,希望對新手有所幫助
1.緩沖文件系統(tǒng)
緩沖文件系統(tǒng)的特點(diǎn)是:在內(nèi)存開辟一個“緩沖區(qū)”,為程序中的每一個文件使用,當(dāng)執(zhí)行讀文件的操作時,從磁盤文件將數(shù)據(jù)先讀入內(nèi)存“緩沖區(qū)”, 裝滿后再從內(nèi)存“緩沖區(qū)”依此讀入接收的變量。執(zhí)行寫文件的操作時,先將數(shù)據(jù)寫入內(nèi)存“緩沖區(qū)”,待內(nèi)存“緩沖區(qū)”裝滿后再寫入文件。由此可以看出,內(nèi)存 “緩沖區(qū)”的大小,影響著實(shí)際操作外存的次數(shù),內(nèi)存“緩沖區(qū)”越大,則操作外存的次數(shù)就少,執(zhí)行速度就快、效率高。一般來說,文件“緩沖區(qū)”的大小隨機(jī)器 而定。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等
2.非緩沖文件系統(tǒng)
緩沖文件系統(tǒng)是借助文件結(jié)構(gòu)體指針來對文件進(jìn)行管理,通過文件指針來對文件進(jìn)行訪問,既可以讀寫字符、字符串、格式化數(shù)據(jù),也可以讀寫二進(jìn)制數(shù) 據(jù)。非緩沖文件系統(tǒng)依賴于操作系統(tǒng),通過操作系統(tǒng)的功能對文件進(jìn)行讀寫,是系統(tǒng)級的輸入輸出,它不設(shè)文件結(jié)構(gòu)體指針,只能讀寫二進(jìn)制文件,但效率高、速度 快,由于ANSI標(biāo)準(zhǔn)不再包括非緩沖文件系統(tǒng),因此建議大家最好不要選擇它。本書只作簡單介紹。open, close, read, write, getc, getchar, putc, putchar 等
前者屬于低級IO,后者是高級IO。
前者返回一個文件描述符(用戶程序區(qū)的),后者返回一個文件指針。
前者無緩沖,后者有緩沖。
前者與 read, write 等配合使用, 后者與 fread, fwrite等配合使用。
后者是在前者的基礎(chǔ)上擴(kuò)充而來的,在大多數(shù)情況下,用后者。
http://blog.chinaunix.net/u/21067/showart_213410.html
open 是系統(tǒng)調(diào)用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的庫函數(shù),返回的是一個指向文件結(jié)構(gòu)的指針。
fopen是ANSIC標(biāo)準(zhǔn)中的C語言庫函數(shù),在不同的系統(tǒng)中應(yīng)該調(diào)用不同的內(nèi)核api
linux中的系統(tǒng)函數(shù)是open,fopen是其封裝函數(shù),個人觀點(diǎn)。僅供參考。
文件描述符是linux下的一個概念,linux下的一切設(shè)備都是以文件的形式操作.如網(wǎng)絡(luò)套接字、硬件設(shè)備等。當(dāng)然包括操作文件。
fopen是標(biāo)準(zhǔn)c函數(shù)。返回文件流而不是linux下文件句柄。
設(shè)備文件不可以當(dāng)成流式文件來用,只能用open
fopen是用來操縱正規(guī)文件的,并且設(shè)有緩沖的,跟open還是有一些區(qū)別
一般用fopen打開普通文件,用open打開設(shè)備文件
fopen是標(biāo)準(zhǔn)c里的,而open是linux的系統(tǒng)調(diào)用.
他們的層次不同.
fopen可移植,open不能
我認(rèn)為fopen和open最主要的區(qū)別是fopen在用戶態(tài)下就有了緩存,在進(jìn)行read和write的時候減少了用戶態(tài)和內(nèi)核態(tài)的切換,而open則每次都需要進(jìn)行內(nèi)核態(tài)和用戶態(tài)的切換;表現(xiàn)為,如果順序訪問文件,fopen系列的函數(shù)要比直接調(diào)用open系列快;如果隨機(jī)訪問文件open要比 fopen快
。

論壇徽章:
0
2 [報告]
發(fā)表于 2010-07-19 16:20 |只看該作者
樓主是做windows下開發(fā)的吧?非緩沖文件系統(tǒng)的很多功能是緩沖文件系統(tǒng)做不到的明白嗎?
可以說f開頭所有的功能都可以用非緩沖文件系統(tǒng)來實(shí)現(xiàn),但反過來就不行.
存在的就是合理的,我相信你老師教你的時候也不會說出"建議大家最好不要選擇它"這樣的話.到了一定火候自然自己會根據(jù)不同情況選擇不同的方法.

論壇徽章:
0
3 [報告]
發(fā)表于 2010-07-19 16:43 |只看該作者
回復(fù) 2# samlumengjun


    我不是做開發(fā)的,我學(xué)電子信息的,覺得linux很好,想學(xué)學(xué),最近看吳岳的《linux c程序設(shè)計大全》,被上面的open和fopen混淆了

論壇徽章:
0
4 [報告]
發(fā)表于 2010-07-19 16:58 |只看該作者
一個是系統(tǒng)調(diào)用,一個是標(biāo)準(zhǔn)IO。一個不帶用戶空間緩沖,一個帶用戶空間緩沖。

論壇徽章:
0
5 [報告]
發(fā)表于 2010-07-19 18:54 |只看該作者
如果順序訪問文件,fopen系列的函數(shù)要比直接調(diào)用open系列快;不會吧,如果全是系統(tǒng)調(diào)用,那也不用切換用戶態(tài)和內(nèi)核態(tài)

論壇徽章:
0
6 [報告]
發(fā)表于 2010-07-19 19:16 |只看該作者
回復(fù) 4# kgn28


    謝謝了,

論壇徽章:
0
7 [報告]
發(fā)表于 2010-07-19 19:17 |只看該作者
回復(fù) 5# 0vk0


    我也不知道,我在別人的博客上看到就轉(zhuǎn)過來了。

論壇徽章:
0
8 [報告]
發(fā)表于 2010-07-30 18:19 |只看該作者
fopen()是標(biāo)準(zhǔn)C open()是系統(tǒng)調(diào)用

論壇徽章:
0
9 [報告]
發(fā)表于 2010-07-30 18:21 |只看該作者
學(xué)電子的也學(xué)C啊  難道你們還沒有學(xué)到?

論壇徽章:
0
10 [報告]
發(fā)表于 2010-07-31 23:05 |只看該作者
fopen是標(biāo)準(zhǔn)c里的,而open是linux的系統(tǒng)調(diào)用.
他們的層次不同.
fopen可移植,open不能
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP