国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
fopen /open,read/write和fread/fwrite區(qū)別 - linux系統(tǒng)調(diào)用函數(shù) - Embedded and Linux

fopen /open區(qū)別

UNIX環(huán)境下的C 對(duì)二進(jìn)制流文件的讀寫(xiě)有兩套班子:1) fopen,fread,fwrite ; 2) open, read, write
這里簡(jiǎn)單的介紹一下他們的區(qū)別。
1. fopen
系列是標(biāo)準(zhǔn)的C庫(kù)函數(shù);open系列是 POSIX 定義的,是UNIX系統(tǒng)里的system call。
也就是說(shuō),fopen系列更具有可移植性;而open系列只能用在 POSIX 的操作系統(tǒng)上。
2.
使用fopen 系列函數(shù)時(shí)要定義一個(gè)指代文件的對(duì)象,被稱為文件句柄file handler),是一個(gè)結(jié)構(gòu)體;而open系列使用的是一個(gè)被稱為文件描述符file descriptor)的int型整數(shù)。
3. fopen
系列是級(jí)別較高的I/O,讀寫(xiě)時(shí)使用緩沖;而open系列相對(duì)低層,更接近操作系統(tǒng),讀寫(xiě)時(shí)沒(méi)有緩沖。由于能更多地與操作系統(tǒng)打交道,open系列可以訪問(wèn)更改一些fopen系列無(wú)法訪問(wèn)的信息,如查看文件的讀寫(xiě)權(quán)限。這些額外的功能通常因系統(tǒng)而異。
4.
使用fopen系列函數(shù)需要"#include <sdtio.h>";使用open系列函數(shù)需要"#include <fcntl.h>" ,鏈接時(shí)要之用libc-lc
小結(jié):
總的來(lái)說(shuō),為了使程序獲得更好的可移植性,未到非得使用一些fopen系列無(wú)法實(shí)現(xiàn)的功能的情況下,fopen系列是首選。

 

read/writefread/fwrite區(qū)別

1,fread是帶緩沖的,read不帶緩沖.
2,fopen
是標(biāo)準(zhǔn)c里定義的,openPOSIX中定義的.
3,fread
可以讀一個(gè)結(jié)構(gòu).readlinux/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.
如果文件的大小是8k。
你如果用read/write,且只分配了2k的緩存,則要將此文件讀出需要做4次系統(tǒng)調(diào)用來(lái)實(shí)際從磁盤(pán)上讀出。
如果你用fread/fwrite,則系統(tǒng)自動(dòng)分配緩存,則讀出此文件只要一次系統(tǒng)調(diào)用從磁盤(pán)上讀出。
也就是用read/write要讀4次磁盤(pán),而用fread/fwrite則只要讀1次磁盤(pán)。效率比read/write要高4倍。
如果程序?qū)?nèi)存有限制,則用read/write比較好。
都用fread fwrite,它自動(dòng)分配緩存,速度會(huì)很快,比自己來(lái)做要簡(jiǎn)單。如果要處理一些特殊的描述符,read write,如套接口,管道之類的
系統(tǒng)調(diào)用write的效率取決于你buf的大小和你要寫(xiě)入的總數(shù)量,如果buf太小,你進(jìn)入內(nèi)核空間的次數(shù)大增,效率就低下。而fwrite會(huì)替你做緩存,減少了實(shí)際出現(xiàn)的系統(tǒng)調(diào)用,所以效率比較高。
如果只調(diào)用一次(可能嗎?),這倆差不多,嚴(yán)格來(lái)說(shuō)write要快一點(diǎn)點(diǎn)(因?yàn)閷?shí)際上fwrite最后還是用了write做真正的寫(xiě)入文件系統(tǒng)工作),但是這其中的差別無(wú)所謂。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
open與fopen區(qū)別
Linux(C/C++)下的文件操作open、fopen與freopen
C語(yǔ)言文件輸入輸出操作
【Linux】open函數(shù)的參數(shù)和作用
open與fopen的區(qū)別
用 PHP 內(nèi)置函數(shù) fwrite 寫(xiě)入文件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服