文件I/O編程之: 實驗內(nèi)容
6.6實驗內(nèi)容
6.6.1文件讀寫及上鎖
1.實驗目的
通過編寫文件讀寫及上鎖的程序,進一步熟悉Linux中文件I/O相關的應用開發(fā),并且熟練掌握open()、read()、write()、fcntl()等函數(shù)的使用。
2.實驗內(nèi)容
在Linux中FIFO是一種進程之間的管道通信機制。Linux支持完整的FIFO通信機制。
本實驗內(nèi)容比較有趣,通過使用文件操作,仿真FIFO(先進先出)結構以及生產(chǎn)者-消費者運行模型。
本實驗中需要打開兩個虛擬終端,分別運行生產(chǎn)者程序(producer)和消費者程序(customer)。此時兩個進程同時對同一個文件進行讀寫操作。因為這個文件是臨界資源,所以可以使用文件鎖機制來保證兩個進程對文件的訪問都是原子操作。
先啟動生產(chǎn)者進程,它負責創(chuàng)建仿真FIFO結構的文件(其實是一個普通文件)并投入生產(chǎn),就是按照給定的時間間隔,向FIFO文件寫入自動生成的字符(在程序中用宏定義選擇使用數(shù)字還是使用英文字符),生產(chǎn)周期以及要生產(chǎn)的資源數(shù)通過參數(shù)傳遞給進程(默認生產(chǎn)周期為1s,要生產(chǎn)的資源數(shù)為10個字符)。
后啟動的消費者進程按照給定的數(shù)目進行消費,首先從文件中讀取相應數(shù)目的字符并在屏幕上顯示,然后從文件中刪除剛才消費過的數(shù)據(jù)。為了仿真FIFO結構,此時需要使用兩次復制來實現(xiàn)文件內(nèi)容的偏移。每次消費的資源數(shù)通過參數(shù)傳遞給進程,默認值為10個字符。
3.實驗步驟
(1)畫出實驗流程圖。
本實驗的兩個程序的流程圖如圖6.4所示。
圖6.4節(jié)流程圖
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論