- 嵌入式應(yīng)用程序設(shè)計(jì)綜合教程(微課版)
- 華清遠(yuǎn)見嵌入式學(xué)院 劉洪濤 熊家主編
- 677字
- 2021-01-15 19:25:07
1.2 Linux標(biāo)準(zhǔn) I/O概述
1.2.1 標(biāo)準(zhǔn) I/O 的由來
標(biāo)準(zhǔn) I/O 指的是 ANSI C 中定義的用于 I/O 操作的一系列函數(shù)。
只要操作系統(tǒng)中安裝了 C 庫,標(biāo)準(zhǔn) I/O 函數(shù)就可以調(diào)用。換句話說,如果程序中使用的是標(biāo)準(zhǔn) I/O 函數(shù),那么源代碼不需要修改就可以在其他操作系統(tǒng)下編譯運(yùn)行,具有更好的可移植性。
除此之外,使用標(biāo)準(zhǔn) I/O 可以減少系統(tǒng)調(diào)用的次數(shù),提高系統(tǒng)效率。標(biāo)準(zhǔn) I/O 函數(shù)在執(zhí)行時(shí)也會(huì)用到系統(tǒng)調(diào)用。在執(zhí)行系統(tǒng)調(diào)用時(shí),Linux 必須從用戶態(tài)切換到內(nèi)核態(tài),處理相應(yīng)的請(qǐng)求,然后再返回到用戶態(tài)。如果頻繁地執(zhí)行系統(tǒng)調(diào)用會(huì)增加系統(tǒng)的開銷。為了避免這種情況,標(biāo)準(zhǔn) I/O 使用時(shí)在用戶空間創(chuàng)建緩沖區(qū),讀寫時(shí)先操作緩沖區(qū),在合適的時(shí)機(jī)再通過系統(tǒng)調(diào)用訪問實(shí)際的文件,從而減少了使用系統(tǒng)調(diào)用的次數(shù)。
1.2.2 流的含義
標(biāo)準(zhǔn) I/O 的核心對(duì)象就是流。當(dāng)用標(biāo)準(zhǔn) I/O 打開一個(gè)文件時(shí),就會(huì)創(chuàng)建一個(gè) FILE 結(jié)構(gòu)體描述該文件(或者理解為創(chuàng)建一個(gè) FILE 結(jié)構(gòu)體和實(shí)際打開的文件關(guān)聯(lián)起來)。我們把這個(gè) FILE 結(jié)構(gòu)體形象地稱為流。標(biāo)準(zhǔn) I/O 函數(shù)都基于流進(jìn)行各種操作。

標(biāo)準(zhǔn) I/O 概述
標(biāo)準(zhǔn) I/O 中的流的緩沖類型有以下3種。
(1)全緩沖。在這種情況下,當(dāng)填滿標(biāo)準(zhǔn) I/O 緩沖區(qū)后才進(jìn)行實(shí)際 I/O操作。對(duì)于存放在磁盤上的普通文件,用標(biāo)準(zhǔn) I/O 打開時(shí)默認(rèn)是全緩沖的。當(dāng)緩沖區(qū)已滿或執(zhí)行 flush 操作時(shí)才會(huì)進(jìn)行磁盤操作。
(2)行緩沖。在這種情況下,當(dāng)在輸入和輸出中遇到換行符時(shí)執(zhí)行 I/O操作。標(biāo)準(zhǔn)輸入流和標(biāo)準(zhǔn)輸出流就是使用行緩沖的典型例子。
(3)無緩沖。不對(duì) I/O 操作進(jìn)行緩沖,即在對(duì)流的讀寫時(shí)會(huì)立刻操作實(shí)際的文件。標(biāo)準(zhǔn)出錯(cuò)流是不帶緩沖的,這就使得出錯(cuò)信息可以立刻顯示在終端上,而不管輸出的內(nèi)容是否包含換行符。
下面討論具體函數(shù)時(shí),請(qǐng)讀者注意區(qū)分以上的3種不同情況。
- Kubernetes修煉手冊(cè)
- 網(wǎng)絡(luò)操作系統(tǒng):Windows Server 2003管理與應(yīng)用
- FreeRTOS實(shí)時(shí)內(nèi)核應(yīng)用指南
- Windows Server 2012 Hyper-V Cookbook
- Linux Shell編程從入門到精通(第2版)
- 混沌工程實(shí)戰(zhàn):手把手教你實(shí)現(xiàn)系統(tǒng)穩(wěn)定性
- Instant Optimizing Embedded Systems using Busybox
- RESS Essentials
- 嵌入式系統(tǒng)及其應(yīng)用(第三版)
- Android物聯(lián)網(wǎng)開發(fā)細(xì)致入門與最佳實(shí)踐
- INSTANT Migration from Windows Server 2008 and 2008 R2 to 2012 How-to
- 一學(xué)就會(huì):Windows Vista應(yīng)用完全自學(xué)手冊(cè)
- 計(jì)算機(jī)系統(tǒng):基于x86+Linux平臺(tái)
- Windows 7實(shí)戰(zhàn)從入門到精通
- Linux應(yīng)用大全 基礎(chǔ)與管理