卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

嵌入式Linux應(yīng)用程序開發(fā)中的文件IO編程

一、Linux系統(tǒng)調(diào)用及API 1. 系統(tǒng)調(diào)用: Linux分為內(nèi)核空間和用戶空間,用戶空間無法直接訪問內(nèi)核空間。內(nèi)核通過系統(tǒng)調(diào)用為用戶提供服務(wù),大約有250個左右的系統(tǒng)調(diào)用,可以分為進(jìn)程控制、進(jìn)

一、Linux系統(tǒng)調(diào)用及API

1. 系統(tǒng)調(diào)用:
Linux分為內(nèi)核空間和用戶空間,用戶空間無法直接訪問內(nèi)核空間。內(nèi)核通過系統(tǒng)調(diào)用為用戶提供服務(wù),大約有250個左右的系統(tǒng)調(diào)用,可以分為進(jìn)程控制、進(jìn)程間通信、文件系統(tǒng)控制、系統(tǒng)控制、存儲管理、網(wǎng)絡(luò)管理、socket控制、用戶管理等幾類。

2. C庫API:
C庫提供了一些API,遵循一定的標(biāo)準(zhǔn),供用戶使用。用戶可以直接調(diào)用系統(tǒng)調(diào)用,也可以調(diào)用C庫提供的API。

二、Linux中文件及文件描述符概述

Linux主要有四種文件類型:普通文件、目錄文件、鏈接文件和設(shè)備文件。在Linux中,使用文件描述符操作文件,尤其對于用戶態(tài)來說更是如此。文件描述符是一個非負(fù)的整數(shù),是個索引值,在打開文件時動態(tài)分配,優(yōu)先分配未使用的最小描述符。進(jìn)程打開時,默認(rèn)會打開三個文件描述符,分別指向標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤。

三、底層文件IO操作

3.1 基本文件操作

3.1.1 函數(shù)說明:
有五個基本函數(shù),不帶緩沖,屬于POSIX標(biāo)準(zhǔn),包括open、read、write、lseek和close。

3.2 文件鎖

3.2.1 共享問題:
多個進(jìn)程操作同一個文件時,可能會造成數(shù)據(jù)混亂的情況。為了解決這個問題,引入了記錄鎖,實(shí)現(xiàn)對文件的獨(dú)占操作。

3.2.2 fcntl()函數(shù):
當(dāng)多個進(jìn)程操作同一文件時,應(yīng)該上鎖以保證數(shù)據(jù)的完整性。在進(jìn)程信息中存放了鎖的信息,關(guān)閉進(jìn)程或者關(guān)閉文件時,該文件的鎖會自動關(guān)閉。使用F_SETLK來設(shè)置鎖,并根據(jù)返回值判斷是否設(shè)置成功。

3.3 多路復(fù)用

3.3.1 IO模型:
阻塞IO會導(dǎo)致進(jìn)程掛起,直到相關(guān)數(shù)據(jù)到達(dá)后才返回。非阻塞IO則不會等待數(shù)據(jù)到達(dá)而是立即返回,通過輪詢各IO,超時等待的方式處理IO操作。select和poll就屬于此類信號驅(qū)動IO。

3.3.2 select函數(shù):
select函數(shù)用于對文件描述符進(jìn)行分類處理,需要使用一些宏定義來清除、添加和判斷文件描述符集中的文件描述符。

標(biāo)簽: