系統(tǒng)之家 - 系統(tǒng)光盤(pán)下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > 辨別Linux中的open和fopen函數(shù)

如何辨別Linux中的open和fopen函數(shù)

時(shí)間:2015-01-09 16:51:18 作者:qipeng 來(lái)源:系統(tǒng)之家 1. 掃描二維碼隨時(shí)看資訊 2. 請(qǐng)使用手機(jī)瀏覽器訪問(wèn): https://m.xitongzhijia.net/xtjc/20150109/34485.html 手機(jī)查看 評(píng)論

  open和fopen是Linux系統(tǒng)的調(diào)用函數(shù),因?yàn)檩^為相似,很多人會(huì)將其混淆,下面小編給大家介紹下open和fopen的區(qū)別之處,不明白的朋友可以來(lái)了解下。

 如何辨別Linux中的open和fopen函數(shù)

  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)依賴(lài)于操作系統(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 等。

  open 是系統(tǒng)調(diào)用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的庫(kù)函數(shù),返回的是一個(gè)指向文件結(jié)構(gòu)的指針。

  fopen是ANSIC標(biāo)準(zhǔn)中的C語(yǔ)言庫(kù)函數(shù),在不同的系統(tǒng)中應(yīng)該調(diào)用不同的內(nèi)核api

  linux中的系統(tǒng)函數(shù)是open,fopen是其封裝函數(shù),個(gè)人觀點(diǎn)。僅供參考。

  文件描述符是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不能

  3. 性能

  我認(rèn)為fopen和open最主要的區(qū)別是fopen在用戶(hù)態(tài)下就有了緩存,在進(jìn)行read和write的時(shí)候減少了用戶(hù)態(tài)和內(nèi)核態(tài)的切換,而open則每次都需要進(jìn)行內(nèi)核態(tài)和用戶(hù)態(tài)的切換;

  表現(xiàn)為:

  (1)如果順序訪問(wèn)文件,fopen系列的函數(shù)要比直接調(diào)用open系列快;

  (2)如果隨機(jī)訪問(wèn)文件open要比f(wàn)open快。

  經(jīng)典回答:

  前者屬于低級(jí)IO,后者是高級(jí)IO。

  前者返回一個(gè)文件描述符(用戶(hù)程序區(qū)的),后者返回一個(gè)文件指針。

  前者無(wú)緩沖,后者有緩沖。

  前者與 read, write 等配合使用, 后者與 fread, fwrite等配合使用。

  后者是在前者的基礎(chǔ)上擴(kuò)充而來(lái)的,在大多數(shù)情況下,用后者。

  上面就是open和fopen的區(qū)別介紹了,兩者的區(qū)別主要是緩沖的區(qū)別,fopen有緩沖而open沒(méi)有,還有它們的層次也有所不同,fopen可移植而open不能。

發(fā)表評(píng)論

0

沒(méi)有更多評(píng)論了

評(píng)論就這些咯,讓大家也知道你的獨(dú)特見(jiàn)解

立即評(píng)論

以上留言?xún)H代表用戶(hù)個(gè)人觀點(diǎn),不代表系統(tǒng)之家立場(chǎng)

其他版本軟件

熱門(mén)教程

人氣教程排行

Linux系統(tǒng)推薦

掃碼關(guān)注
掃碼關(guān)注

掃碼關(guān)注 官方交流群 軟件收錄