版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、畢業(yè)設(shè)計(論文)材料之二(2)安徽工程科技學(xué)院本科畢業(yè)設(shè)計(論文)開題報告題目: 基于嵌入式linux的 視頻監(jiān)控系統(tǒng) 課 題 類 型: 科研 論文 模擬 實踐學(xué) 生 姓 名: 學(xué) 號: 專 業(yè) 班 級: 教 學(xué) 單 位: 指 導(dǎo) 教 師: 開 題 時 間: 2010 年 3 月 1 日一、畢業(yè)設(shè)計(論文)內(nèi)容及研究意義(價值)1.研究內(nèi)容本課題主要研究嵌入式linux應(yīng)用系統(tǒng)的開發(fā)過程。其主要包括:(1)、交叉編譯環(huán)境的搭建;(2)、嵌入式linux的移植;(3)、文件系統(tǒng)的制作;(4)、usb攝像頭的驅(qū)動設(shè)計;(5)、視頻圖像的采集、壓縮、傳輸?shù)燃夹g(shù)。(6)、嵌入式web服務(wù)器的建立2.研
2、究意義為了更加高效地對監(jiān)控現(xiàn)場進(jìn)行實時監(jiān)控和遠(yuǎn)程監(jiān)控,同時考慮到各方面的成本因素而提出基于嵌入式linux的視頻監(jiān)控系統(tǒng)。該系統(tǒng)可應(yīng)用于各種小區(qū)、商場、醫(yī)院看護(hù)等公共場所的領(lǐng)域,實現(xiàn)視頻監(jiān)控的網(wǎng)絡(luò)化,數(shù)字化,相比傳統(tǒng)的監(jiān)控模式,使監(jiān)控現(xiàn)場的管理更加便捷,效率更高。二、畢業(yè)設(shè)計(論文)研究現(xiàn)狀和發(fā)展趨勢(文獻(xiàn)綜述)嵌入式linux(embeded linux)是指對標(biāo)準(zhǔn)linux經(jīng)過小型化裁剪處理之后,能夠固化在容量只有幾kb或者幾mb字節(jié)的存儲器芯片或者單片機(jī)中,是適合于特定嵌入式應(yīng)用場合的專用linux操作系統(tǒng)。在目前已經(jīng)開發(fā)成功的嵌入式系統(tǒng)中,大約有一半使用的是linux,這與它自身的優(yōu)良
3、特性是分不開的。嵌入式linux同linux一樣,具有低成本、多種硬件平臺支持、優(yōu)異的性能和良好的網(wǎng)絡(luò)支持等優(yōu)點。另外,為了更好地適應(yīng)嵌入式領(lǐng)域的開發(fā),嵌入式linux還在linux基礎(chǔ)上做了部分改進(jìn),如改善了內(nèi)核結(jié)構(gòu),提高了系統(tǒng)的實時性等。目前國內(nèi)外不少大學(xué)、研究機(jī)構(gòu)、和知名公司都加入了嵌入式linux的研究開發(fā)工作,較成熟的嵌入式linux產(chǎn)品也不斷涌現(xiàn)。視頻監(jiān)控系統(tǒng)在電信、銀行、交通、電力、水利、石化、智能大廈等諸多領(lǐng)域有著廣泛的應(yīng)用。隨著計算機(jī)技術(shù)、多媒體技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,視頻監(jiān)控系統(tǒng)正向數(shù)字化、網(wǎng)絡(luò)化、集成化和智能化方向發(fā)展。以嵌入式視頻web服務(wù)器為核心的視頻監(jiān)控系統(tǒng)是視頻監(jiān)控
4、系統(tǒng)中主流的研究現(xiàn)狀,把視頻壓縮和web服務(wù)器集中到一個很小的設(shè)備中,可以方便地接入計算機(jī)網(wǎng)絡(luò),用戶只要通過web訪問就可以方便地觀看web服務(wù)器上的攝像機(jī)圖像。以嵌入式視頻web服務(wù)器為核心的視頻監(jiān)控系統(tǒng)布控區(qū)域廣闊,系統(tǒng)擴(kuò)展能力強(qiáng), 可組成非常復(fù)雜的監(jiān)控網(wǎng)絡(luò)。采用基于嵌入式web服務(wù)器為核心的監(jiān)控系統(tǒng),在組網(wǎng)方式上與傳統(tǒng)的模擬監(jiān)控和基于pc平臺的監(jiān)控方式有極大的不同?;趙eb服務(wù)器輸出己完成模擬到數(shù)字的轉(zhuǎn)換并壓縮,采用統(tǒng)一的協(xié)議(如tcp/ip協(xié)議)在網(wǎng)絡(luò)上傳輸,因此支持跨網(wǎng)關(guān)、跨路由器的遠(yuǎn)程視頻傳輸,性能穩(wěn)定可靠,無需專人管理。數(shù)字視頻監(jiān)控系統(tǒng)設(shè)備中具有圖像識別和特征提取的功能,通過圖
5、像分析實現(xiàn)運動探測和報警,使其更具視頻數(shù)字化、系統(tǒng)的網(wǎng)絡(luò)化、應(yīng)用的多媒體化、管理的智能化,這將成為今后數(shù)字視頻監(jiān)控系統(tǒng)的主要發(fā)展趨勢。另外,新的視頻監(jiān)控系統(tǒng)的研究也受到關(guān)注,比如對于一種新的錄像監(jiān)控系統(tǒng)數(shù)字硬盤錄像機(jī) (digitalvideorecord,dvr)的研究陽】。數(shù)字硬盤錄像機(jī)摒棄了傳統(tǒng)的模擬數(shù)據(jù),采用了數(shù)字化的方式記錄數(shù)據(jù)。具有存儲量大,成本低,檢索方便的特點,在許多領(lǐng)域受到重用。 三、畢業(yè)設(shè)計(論文)研究方案及工作計劃(含工作重點與難點及擬采用的途徑)1、設(shè)計思路: 系統(tǒng)的主體設(shè)計思想是將視頻終端和嵌入式web服務(wù)器整合在一起,攝像頭傳送來的視頻信號經(jīng)過壓縮后,通過內(nèi)部總線傳
6、送到內(nèi)置的web服務(wù)器。該服務(wù)器可直接接上internet,網(wǎng)絡(luò)上用戶可以直接用瀏覽器(如ie瀏覽器)觀看服務(wù)器上的監(jiān)控圖像。這種方案是當(dāng)前應(yīng)用較為廣泛的方法,使用了近來發(fā)展迅速的嵌入式技術(shù)、網(wǎng)絡(luò)化技術(shù)以及圖像處理的技術(shù),具有較高的技術(shù)水平。由于把視頻采集壓縮和web功能集成到一個設(shè)備內(nèi)直接連入網(wǎng)絡(luò),達(dá)到即插即看,省掉很多復(fù)雜的電路,安裝也很方便(僅需設(shè)置ip地址),用戶無需使用專用軟件,在具有網(wǎng)絡(luò)接口的地方都可以直接使用。這種視頻監(jiān)控系統(tǒng)除應(yīng)用于遠(yuǎn)程網(wǎng)絡(luò)實驗系統(tǒng)中,也可以應(yīng)用在其它如小區(qū),醫(yī)院病床監(jiān)護(hù)等各種設(shè)備之間距離較大的情況。本文將設(shè)計一個基于嵌入式linux的嵌入式視頻監(jiān)控系統(tǒng),即對嵌
7、入式linux在視頻監(jiān)控系統(tǒng)中的應(yīng)用展開研究。本系統(tǒng)的主要硬件組成為基于三星s3c2440的mini2440開發(fā)系統(tǒng)和usb攝像頭。操作系統(tǒng)采用在嵌入式技術(shù)中流行的嵌入式linux。系統(tǒng)將實現(xiàn)實驗現(xiàn)場的網(wǎng)絡(luò)化實時視頻監(jiān)控,同時具有網(wǎng)絡(luò)化遠(yuǎn)程控制功能。當(dāng)然在此基礎(chǔ)上也可實現(xiàn)對多個視頻前端的訪問和控制。本文將對嵌入式linux在arm開發(fā)平臺上內(nèi)核、文件系統(tǒng)的開發(fā)和移植,視頻前端設(shè)備(usb攝像頭)驅(qū)動程序的開發(fā),視頻圖像的采集和壓縮,服務(wù)器的建立及視頻圖像的網(wǎng)絡(luò)傳輸?shù)妊芯績?nèi)容進(jìn)行了詳細(xì)的論述,并對系統(tǒng)建成后在實際中的應(yīng)用進(jìn)行了測試和實驗。2、應(yīng)用的技術(shù)分析: 集計算機(jī)技術(shù)、通信技術(shù)、微電子技術(shù)等
8、多種技術(shù)為一體的嵌入式技術(shù)進(jìn)入到了一個飛速發(fā)展的階段,嵌入式系統(tǒng)已被廣泛應(yīng)用到了航空、消費電子、信息家電、網(wǎng)絡(luò)通信等各個領(lǐng)域。arm9 s3c2440是嵌入式處理器是性價比較優(yōu)秀的芯片,在各個領(lǐng)域的開發(fā)應(yīng)用有著廣闊的應(yīng)用前景。同時arm9 s3c2440微處理器與linux的結(jié)合越來越緊密,逐漸在嵌入式領(lǐng)域得到廣范的應(yīng)用。目前,在便攜式消費類電子產(chǎn)品、無線設(shè)備、汽車、網(wǎng)絡(luò)、存儲產(chǎn)品等都可以看到s3c2440與linux相結(jié)合的身影。 samsung s3c2440a是一個很不錯的嵌入式微處理器,價格相當(dāng)較便宜、內(nèi)部資源多、最主要的是國內(nèi)很多人使用,相關(guān)的資料比較多?;緟?shù):arm920t內(nèi)核
9、, 400m主頻,最高可達(dá)到533m,支持nand flash、norflash、sdram、支持stn/tft lcd、4通道dma、3通道uart、2通道spi、iic總線、iis/ac97音頻控制器、sd/mmc控制器、2通道usb host 1通道usb device、4通道pwm、8通道a/d轉(zhuǎn)換、觸摸屏控制器、rtc、cmos攝像頭、多功能i/o及多種電源管理在眾多嵌入式操作系統(tǒng)中,linux目前發(fā)展最快、應(yīng)用最為廣泛1。性能優(yōu)良、源碼開放的linux具有體積小、內(nèi)核可裁減、網(wǎng)絡(luò)功能完善、可移植性強(qiáng)等諸多優(yōu)點,非常適合作為嵌入式操作系統(tǒng)。一個最基本的linux操作系統(tǒng)應(yīng)該包括:引導(dǎo)
10、程序、內(nèi)核與根文件系統(tǒng)三部分。usb設(shè)備驅(qū)動程序的設(shè)計包括主機(jī)端設(shè)備驅(qū)動程序設(shè)計、主機(jī)控制器驅(qū)動程序設(shè)計和設(shè)備端驅(qū)動程序設(shè)計三部分組成。主機(jī)端設(shè)備驅(qū)動程序就是通常說的設(shè)備驅(qū)動程序,它是主機(jī)環(huán)境中為用戶應(yīng)用程序提供一個訪問usb外設(shè)的接口。linux為這部分驅(qū)動程序提供編程接口,驅(qū)動程序設(shè)計者只要按照需求編寫驅(qū)動程序框架,通過調(diào)用操作系統(tǒng)提供的api接口函數(shù)可以完成對usb外設(shè)的特定訪問。視頻采集是基于video4linux的視頻采集模塊來實現(xiàn),linux系統(tǒng)中的視頻子系統(tǒng)video4linux為視頻應(yīng)用程序提供了一套統(tǒng)一的api,視頻應(yīng)用程序通過調(diào)用即可操作各種不同的視頻捕獲設(shè)備,包括電視卡、
11、視頻捕獲卡和usb攝像頭等。對于攝像頭的視頻采集,需要使用video4linux提供的設(shè)備接口/dev/video0,若文件中沒有這個設(shè)備文件,則先建立該設(shè)備節(jié)點文件。要實現(xiàn)監(jiān)控現(xiàn)場,除了完成視頻采集的編程,還需要把視頻圖像數(shù)據(jù)通過網(wǎng)絡(luò)傳輸出去,因此需要在完成視頻讀取的基礎(chǔ)上建立web服務(wù)器,一是為了實現(xiàn)對硬件設(shè)備的擴(kuò)展和訪問,二是為了實現(xiàn)客戶端和服務(wù)器之間的數(shù)據(jù)通訊3、技術(shù)方案比較: 本課題的主要要方案選擇是在操作系統(tǒng)的選擇。除了wince的實時性稍差外,大多數(shù)嵌入式操作系統(tǒng)的實時性都很強(qiáng),所以也可稱為實時操作系統(tǒng)real time operating system.目前最重要的rtos主要
12、包括:(1)、傳統(tǒng)的經(jīng)典rtos:最主要的便是vxworks操作系統(tǒng),以及其tornado開發(fā)平臺。vxworks因出現(xiàn)稍早,實時性很強(qiáng)(據(jù)說可在1ms內(nèi)響應(yīng)外部事件請求),并且內(nèi)核可極微(據(jù)說最小可8k),可靠性較高等,所以在北美,vxworks占據(jù)了嵌入式系統(tǒng)的多半疆山。特別是在通信設(shè)備等實時性要求較高的系統(tǒng)中,幾乎非vxworks莫屬。vxworks的很多概念和技術(shù)都和linux很類似,主要是c語言開發(fā)。但vxworks因價格很高,所以一些小公司或小產(chǎn)品中往往用不起。不適合我做課題。(2)、 windows ce嵌入式操作系統(tǒng):microsoft也看準(zhǔn)了嵌入式的巨大市場,ms永遠(yuǎn)是最厲害
13、的,wince出來只有幾年時間,但目前已占據(jù)了很大市場份額,特別是在pda、手機(jī)、顯示儀表等界面要求較高或者要求快速開發(fā)的場合,wince目前已很流行(據(jù)說有一家賣工控機(jī)的公司板子賣得太好,以至來不及為客戶裁減wince)。wince目前主要為5.0版(.net),開發(fā)平臺主要為wince platform builder,有時也用evc環(huán)境開發(fā)一些較上層的應(yīng)用, 雖然有著良好的性能,但開發(fā)成本過高不適宜我們學(xué)習(xí)。(3)、嵌入式linux操作系統(tǒng):linux的前途除作為服務(wù)器操作系統(tǒng)外,最成功的便是在嵌入式領(lǐng)域的應(yīng)用,原因當(dāng)然是免費、開源、支持軟件多、呼擁者眾,這樣嵌入式產(chǎn)品成本會低。linu
14、x本身不是一個為嵌入式設(shè)計的操作系統(tǒng),不是微內(nèi)核的,并且實時性不強(qiáng)。目前應(yīng)用在嵌入式領(lǐng)域的linux系統(tǒng)主要有兩類:一類是專為嵌入式設(shè)計的已被裁減過的linux系統(tǒng),最常用的是uclinux(不帶mmu功能),可在arm7上跑;另一類是跑在arm 9上的,一般是將linux 2.4內(nèi)核系列或者linux2.6系列內(nèi)核移植在其上,可使用更多的linux功能(當(dāng)然uclinux更可跑在arm 9上)。很多人預(yù)測,嵌入式linux預(yù)計將占嵌入式操作系統(tǒng)的50%以上份額,非常重要。由于開源免費等等的優(yōu)勢,適合本課題實現(xiàn),是理想的方案選擇。4、設(shè)計重點難點: 本課題重點和難點在于交叉編譯環(huán)境的搭建,li
15、nux內(nèi)核的編譯,根文件系統(tǒng)的制作,視頻采集的實現(xiàn),視頻圖像的壓縮和傳輸?shù)戎R要點。5、總體描述與系統(tǒng)框架: 系統(tǒng)描述如圖1所示:用戶瀏覽器web服務(wù)器inernet視頻壓縮設(shè)備驅(qū)動usb攝像頭服務(wù)器/mini2440linux內(nèi)核文件系統(tǒng)圖1. 總體描述系統(tǒng)框架如圖2所示:mini2440開發(fā)板usb攝像頭板級支持包(bsp)usb驅(qū)動其他驅(qū)動以太網(wǎng)驅(qū)動tcp/ip網(wǎng)絡(luò)系統(tǒng)文件系統(tǒng)linux內(nèi)核www瀏覽器視頻監(jiān)控應(yīng)用軟件圖2. 系統(tǒng)框架6、各子模塊的實現(xiàn)方法:(1)、建立嵌入式linux開發(fā)環(huán)境:在xp系統(tǒng)中虛擬一個linux開發(fā)環(huán)境,在linux系統(tǒng)下載arm-linux-gcc交叉編譯
16、工具并配置交叉編譯環(huán)境。(2)、linux內(nèi)核的移植:配置標(biāo)準(zhǔn)的linux內(nèi)核,編譯,下載至開發(fā)板中。(3)、文件系統(tǒng)的制作:用busybox編譯一個根文件系統(tǒng),創(chuàng)建映像文件。(4)、usb驅(qū)動設(shè)計,修改配置linux內(nèi)核并編譯。(5)、視頻壓縮:將usb攝像頭傳來的每一幀圖像壓縮成jpeg格式的圖片。(6)、嵌入式web服務(wù)器的設(shè)計:用boa配置編譯并移植到開發(fā)板中。(7)、用戶瀏覽器訪問服務(wù)器實現(xiàn)監(jiān)控:通過局域網(wǎng)設(shè)置ip地址與嵌入式linux系統(tǒng)的ip地址屬同一網(wǎng)段即可訪問服務(wù)器。7、預(yù)期結(jié)果: 制作出一個能實際應(yīng)用的基于嵌入式linux的視頻監(jiān)控系統(tǒng)。usb攝像頭能捕獲現(xiàn)場視頻并傳至we
17、b服務(wù)器,同時客戶端的瀏覽器能訪問服務(wù)器對監(jiān)控現(xiàn)場進(jìn)行實時監(jiān)控。8、工作計劃:l 第1周畢業(yè)實習(xí)(1)l 第2周畢業(yè)實習(xí)(2) l 第3周 需求分析,并開始撰寫畢業(yè)設(shè)計說明書l 第4周 系統(tǒng)可行性分析l 第5周 linux操作系統(tǒng)的安裝與使用l 第6周 開發(fā)環(huán)境的搭建,并練習(xí)操作l 第7周 嵌入式linux內(nèi)核編譯移植l 第8周 文件系統(tǒng)制作移植l 第9周 linux環(huán)境下編程練習(xí)l 第10周驅(qū)動編寫準(zhǔn)備練習(xí)l 第11周usb攝像頭驅(qū)動編寫l 第12周分析實現(xiàn)視頻壓縮技術(shù)l 第13周分析實現(xiàn)視頻傳輸技術(shù)l 第14周嵌入式web服務(wù)器的實現(xiàn)與移植l 第15周應(yīng)用系統(tǒng)的實現(xiàn)l 第16周整機(jī)功能調(diào)試
18、l 第17周修改調(diào)試,并完善設(shè)計說明書(1)l 第18周修改調(diào)試,并完善設(shè)計說明書(2)四、主要參考文獻(xiàn) 1 廖日坤. arm嵌入式應(yīng)用開發(fā)技術(shù)白金手冊m.北京:中國電力出版社,2005.2 鄭靈翔.嵌入式linux系統(tǒng)設(shè)計m.北京:北京航空航天大學(xué)出版社, 2008.3 孫瓊. 嵌入式linux應(yīng)用程序開發(fā)詳解m.北京:人民郵電出版社, 2006.4 薛圓圓.usb應(yīng)用開發(fā)技術(shù)大全m.北京:人民郵電出版社,2007.5 華清遠(yuǎn)見嵌入式培訓(xùn)中心.嵌入式linux c語言應(yīng)用程序設(shè)計.北京:人民郵電出版社,2007.6 brian w.kernighan and dennis m.ritchie
19、.the c programming language(2nd edition)m.美國:prentice hall,1988.7 w. richard stevens, stephen a. rago. advanced programming in the unix environment 2nd editionm. 美國:addison wesley,2005.8 郭聳. 基于嵌入式linux 和web 服務(wù)器的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)j. 哈爾濱商業(yè)大學(xué)學(xué)報(自然科學(xué)版),2005.9 梅飛. 嵌入式linux 網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計j. 現(xiàn)代電子技術(shù),2007.10 譚曉. 嵌入式linux
20、平臺的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)j.電子技術(shù),2006.11 詹亮. 基于嵌入式linux的遠(yuǎn)程視頻監(jiān)控系統(tǒng)研究j. 成都紡織高等??茖W(xué)校學(xué)報,2008.12 孫江波. 基于嵌入式linux的視頻監(jiān)控系統(tǒng)設(shè)計j. 武漢工業(yè)學(xué)院學(xué)報,2006.13 孫健. 基于嵌入式linux 的視頻監(jiān)控系統(tǒng)的設(shè)計j. 電腦知識與技術(shù),2008.14 張倩. 基于嵌入式linux的視頻監(jiān)控系統(tǒng)j. 天津工業(yè)大學(xué)學(xué)報,2007.15 郝衛(wèi)東. 基于linux的嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)研究與設(shè)計j,計算機(jī)系統(tǒng)與應(yīng)用,2008.附錄1 外文文獻(xiàn)file i/o3.3 open functiona file is opened o
21、r created by calling the open function.#include int open(const char *pathname, int oflag, . /* mode_t mode */ );returns: file descriptor if ok, 1 on errorwe show the third argument as ., which is the iso c way to specify that the number and types of the remaining arguments may vary. for this functio
22、n, the third argument is used only when a new file is being created, as we describe later. we show this argument as a comment in the prototype. the pathname is the name of the file to open or create. this function has a multitude of options, which are specified by the oflag argument. this argument i
23、s formed by oring together one or more of the following constants from the header:o_rdonlyopen for reading only.o_wronlyopen for writing only.o_rdwr open for reading and writing. most implementations define o_rdonly as 0, o_wronly as 1, and o_rdwr as 2, for compatibility with older programs. one and
24、 only one of these three constants must be specified. the following constants are optional:o_appendappend to the end of file on each write. we describe this option in detail in section 3.11.o_creatcreate the file if it doesnt exist. this option requires a third argument to the open function, the mod
25、e, which specifies the access permission bits of the new file. (when we describe a files access permission bits in section 4.5, well see how to specify the mode and how it can be modified by the umask value of a process.)o_exclgenerate an error if o_creat is also specified and the file already exist
26、s. this test for whether the file already exists and the creation of the file if it doesnt exist is an atomic operation. we describe atomic operations in more detail in section 3.11.o_truncif the file exists and if it is successfully opened for either write-only or readwrite, truncate its length to
27、0.o_nocttyif the pathname refers to a terminal device, do not allocate the device as the controlling terminal for this process. we talk about controlling terminals in section 9.6.o_nonblockif the pathname refers to a fifo, a block special file, or a character special file, this option sets the nonbl
28、ocking mode for both the opening of the file and subsequent i/o.3.5 close functionan open file is closed by calling the close function.#include int close(int filedes);returns: 0 if ok, 1 on errorclosing a file also releases any record locks that the process may have on the file. when a process termi
29、nates, all of its open files are closed automatically by the kernel. many programs take advantage of this fact and dont explicitly close open files. 3.7 read functiondata is read from an open file with the read function.#include ssize_t read(int filedes, void *buf, size_t nbytes);returns: number of
30、bytes read, 0 if end of file, 1 on errorif the read is successful, the number of bytes read is returned. if the end of file is encountered, 0 is returned.there are several cases in which the number of bytes actually read is less than the amount requested: when reading from a regular file, if the end
31、 of file is reached before the requested number of bytes has been read. for example, if 30 bytes remain until the end of file and we try to read 100 bytes, read returns 30. the next time we call read, it will return 0 (end of file). when reading from a terminal device. normally, up to one line is re
32、ad at a time. (well see how to change this in chapter 18.) when reading from a network. buffering within the network may cause less than the requested amount to be returned. when reading from a pipe or fifo. if the pipe contains fewer bytes than requested, read will return only what is available. wh
33、en reading from a record-oriented device. some record-oriented devices, such as magnetic tape, can return up to a single record at a time. when interrupted by a signal and a partial amount of data has already been read. we discuss this further in section 10.5.the read operation starts at the files c
34、urrent offset. before a successful return, the offset is incremented by the number of bytes actually read. posix.1 changed the prototype for this function in several ways. the classic definition is int read(int filedes, char *buf, unsigned nbytes); first, the second argument was changed from a char
35、* to a void * to be consistent with iso c: the type void * is used for generic pointers. next, the return value must be a signed integer (ssize_t) to return a positive byte count, 0 (for end of file), or 1 (for an error). finally, the third argument historically has been an unsigned integer, to allo
36、w a 16-bit implementation to read or write up to 65,534 bytes at a time. with the 1990 posix.1 standard, the primitive system data type ssize_t was introduced to provide the signed return value, and the unsigned size_t was used for the third argument. 3.8 write functiondata is written to an open fil
37、e with the write function.#include ssize_t write(int filedes, const void *buf, size_t nbytes);returns: number of bytes written if ok, 1 on errorthe return value is usually equal to the nbytes argument; otherwise, an error has occurred. a common cause for a write error is either filling up a disk or
38、exceeding the file size limit for a given process for a regular file, the write starts at the files current offset. if the o_append option was specified when the file was opened, the files offset is set to the current end of file before each write operation. after a successful write, the files offse
39、t is incremented by the number of bytes actually written.附錄2譯文文件i/o3.3 open函數(shù)調(diào)用o p e n函數(shù)可以打開或創(chuàng)建一個文件。#include #include #include int open(const charp a *t hname, int oflag,./*, mode_t mode */ ) ;返回:若成功為文件描述符,若出錯為- 1我們將第三個參數(shù)寫為. . .,這是ansi c說明余下參數(shù)的數(shù)目和類型可以變化的方法。對于o p e n函數(shù)而言,僅當(dāng)創(chuàng)建新文件時才使用第三個參數(shù)。(我們將在稍后對此進(jìn)行說
40、明。)在函數(shù)原型中此參數(shù)放置在注釋中。pathname是要打開或創(chuàng)建的文件的名字。oflag參數(shù)可用來說明此函數(shù)的多個選擇項。用下列一個或多個常數(shù)進(jìn)行或運算構(gòu)成o f l a g參數(shù)(這些常數(shù)定義在頭文件中): o_rdonly 只讀打開。 o_wronly 只寫打開。 o_rdwr 讀、寫打開。很多實現(xiàn)將ordonly定義為0,owronly定義為1,ordwr定義為2,以與早期的系統(tǒng)兼容。在這三個常數(shù)中應(yīng)當(dāng)只指定一個。下列常數(shù)則是可選擇的: o_append 每次寫時都加到文件的尾端。3.11節(jié)將詳細(xì)說明此選擇項。 o_creat 若此文件不存在則創(chuàng)建它。使用此選擇項時,需同時說明第三個參
41、數(shù)m o d e,用其說明該新文件的存取許可權(quán)位。( 4.5節(jié)將說明文件的許可權(quán)位,那時就能了解如何說明mode,以及如何用進(jìn)程的umask值修改它。) o_excl 如果同時指定了ocreat,而文件已經(jīng)存在,則出錯。這可測試一個文件是否存在,如果不存在則創(chuàng)建此文件成為一個原子操作。3.11節(jié)將較詳細(xì)地說明原子操作。 o_trunc 如果此文件存在,而且為只讀或只寫成功打開,則將其長度截短為0。 o_noctty 如果pathname指的是終端設(shè)備,則不將此設(shè)備分配作為此進(jìn)程的控制終端。9.6節(jié)將說明控制終端。 o_nonblock 如果pathname指的是一個f i f o、一個塊特殊文件或一個字符特殊文件,則此選擇項為此文件的本次打開操作和后續(xù)的i / o操作設(shè)置非阻塞方式。3.5 close函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 針織品銷售與顧客關(guān)系管理考核試卷
- 集裝箱模塊化設(shè)計理念考核試卷
- 鍋爐及輔助設(shè)備的可持續(xù)發(fā)展技術(shù)趨勢分析考核試卷
- 餐飲配送服務(wù)模式創(chuàng)新與市場拓展考核試卷
- 高等職業(yè)教育的意義與發(fā)展考核試卷
- 魚種場養(yǎng)殖設(shè)備選型與使用維護(hù)考核試卷
- 道路運輸危險貨物安全運輸法律法規(guī)應(yīng)用考核試卷
- 回醫(yī)學(xué)的特色醫(yī)院治療項目
- 重慶育才中學(xué)高2025屆高三(上)一診模擬考試語文試題及答案
- 纖維材料力學(xué)性能優(yōu)化-洞察分析
- 英語-湖南省天一大聯(lián)考暨郴州市2025屆高考高三第二次教學(xué)質(zhì)量檢測(郴州二檢懷化統(tǒng)考)試題和答案
- 【MOOC期末】《形勢與政策》(北京科技大學(xué))期末慕課答案
- 營銷專業(yè)安全培訓(xùn)
- 2024年度五星級酒店廚師團(tuán)隊管理與服務(wù)合同3篇
- 2024年醫(yī)療健康知識科普視頻制作合同3篇
- 廣東省廣州市花都區(qū)2024年七年級上學(xué)期期末數(shù)學(xué)試題【附答案】
- 期末測試模擬練習(xí) (含答案) 江蘇省蘇州市2024-2025學(xué)年統(tǒng)編版語文七年級上冊
- 上海市徐匯區(qū)2024-2025學(xué)年高一語文下學(xué)期期末試題含解析
- 安全風(fēng)險隱患舉報獎勵制度
- 江蘇省蘇州市2023-2024學(xué)年高三上學(xué)期期末考試 數(shù)學(xué) 含答案
- 線性代數(shù)知到智慧樹章節(jié)測試課后答案2024年秋貴州理工學(xué)院
評論
0/150
提交評論