新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 文件I/O編程之: 實(shí)驗(yàn)內(nèi)容

文件I/O編程之: 實(shí)驗(yàn)內(nèi)容

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/257134.htm

6.6實(shí)驗(yàn)內(nèi)容

6.6.1文件讀寫(xiě)及上鎖

1.實(shí)驗(yàn)?zāi)康?/h4>

通過(guò)編寫(xiě)文件讀寫(xiě)及上鎖的程序,進(jìn)一步熟悉中文件I/O相關(guān)的應(yīng)用開(kāi)發(fā),并且熟練掌握open()、read()、write()、fcntl()等函數(shù)的使用。

2.實(shí)驗(yàn)內(nèi)容

中FIFO是一種進(jìn)程之間的管道通信機(jī)制。支持完整的機(jī)制。

本實(shí)驗(yàn)內(nèi)容比較有趣,通過(guò)使用文件操作,仿真FIFO(先進(jìn)先出)結(jié)構(gòu)以及生產(chǎn)者-消費(fèi)者運(yùn)行模型。

本實(shí)驗(yàn)中需要打開(kāi)兩個(gè)虛擬終端,分別運(yùn)行生產(chǎn)者程序(producer)和消費(fèi)者程序(customer)。此時(shí)兩個(gè)進(jìn)程同時(shí)對(duì)同一個(gè)文件進(jìn)行讀寫(xiě)操作。因?yàn)檫@個(gè)文件是臨界資源,所以可以使用文件鎖機(jī)制來(lái)保證兩個(gè)進(jìn)程對(duì)文件的訪(fǎng)問(wèn)都是原子操作。

先啟動(dòng)生產(chǎn)者進(jìn)程,它負(fù)責(zé)創(chuàng)建仿真FIFO結(jié)構(gòu)的文件(其實(shí)是一個(gè)普通文件)并投入生產(chǎn),就是按照給定的時(shí)間間隔,向FIFO文件寫(xiě)入自動(dòng)生成的字符(在程序中用宏定義選擇使用數(shù)字還是使用英文字符),生產(chǎn)周期以及要生產(chǎn)的資源數(shù)通過(guò)參數(shù)傳遞給進(jìn)程(默認(rèn)生產(chǎn)周期為1s,要生產(chǎn)的資源數(shù)為10個(gè)字符)。

后啟動(dòng)的消費(fèi)者進(jìn)程按照給定的數(shù)目進(jìn)行消費(fèi),首先從文件中讀取相應(yīng)數(shù)目的字符并在屏幕上顯示,然后從文件中刪除剛才消費(fèi)過(guò)的數(shù)據(jù)。為了仿真FIFO結(jié)構(gòu),此時(shí)需要使用兩次復(fù)制來(lái)實(shí)現(xiàn)文件內(nèi)容的偏移。每次消費(fèi)的資源數(shù)通過(guò)參數(shù)傳遞給進(jìn)程,默認(rèn)值為10個(gè)字符。

3.實(shí)驗(yàn)步驟

(1)畫(huà)出實(shí)驗(yàn)流程圖。

本實(shí)驗(yàn)的兩個(gè)程序的流程圖如圖6.4所示。

圖6.4節(jié)流程圖

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: I/O編程 Linux FIFO通信

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉