<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/257134.htm

          6.6實驗內(nèi)容

          6.6.1文件讀寫及上鎖

          1.實驗?zāi)康?/h4>

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

          2.實驗內(nèi)容

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

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

          本實驗中需要打開兩個虛擬終端,分別運行生產(chǎn)者程序(producer)和消費者程序(customer)。此時兩個進(jìn)程同時對同一個文件進(jìn)行讀寫操作。因為這個文件是臨界資源,所以可以使用文件鎖機制來保證兩個進(jìn)程對文件的訪問都是原子操作。

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

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

          3.實驗步驟

          (1)畫出實驗流程圖。

          本實驗的兩個程序的流程圖如圖6.4所示。

          圖6.4節(jié)流程圖

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

          上一頁 1 2 3 4 下一頁

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

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();