Linux實(shí)驗(yàn)報(bào)告.doc_第1頁(yè)
Linux實(shí)驗(yàn)報(bào)告.doc_第2頁(yè)
Linux實(shí)驗(yàn)報(bào)告.doc_第3頁(yè)
Linux實(shí)驗(yàn)報(bào)告.doc_第4頁(yè)
Linux實(shí)驗(yàn)報(bào)告.doc_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Linux應(yīng)用實(shí)踐課程設(shè)計(jì)報(bào)告學(xué) 院: 專(zhuān) 業(yè): 姓 名: 學(xué) 號(hào): 指導(dǎo)教師: 王學(xué)文 年 月 日摘要Linux誕生于1991年,是一個(gè)自由的,免費(fèi)的,源碼開(kāi)放的操作系統(tǒng)。也是開(kāi)源軟件中最著名的例子。其最主要的目的就是為了建立不受任何商品化軟件版權(quán)制約的,全世界都能使用的類(lèi)Unix兼容產(chǎn)品.而我們將服務(wù)器部署在Linux將會(huì)更加的穩(wěn)定、安全、高效以及出色的性能。目前國(guó)內(nèi)越來(lái)越多的服務(wù)器應(yīng)用也開(kāi)始轉(zhuǎn)向linux平臺(tái),學(xué)習(xí)并掌握如何使用linux對(duì)計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的學(xué)生來(lái)說(shuō)具有重大的意義。關(guān)鍵詞:linux,shell,gcc目錄1. 前言12. 需求分析12.1課程設(shè)計(jì)主要任務(wù)12.2 開(kāi)發(fā)環(huán)境12.3 相關(guān)工具的的介紹與使用13.程序設(shè)計(jì)23.1概要設(shè)計(jì)23.1.1 shell 9 題目分析23.1.2 system6 題目分析33.1.3 system7 題目分析33.2 詳細(xì)設(shè)計(jì)3 3.2.1 shell 9 過(guò)程設(shè)計(jì)33.2.2 system 6 過(guò)程設(shè)計(jì)43.2.3 system 7 過(guò)程設(shè)計(jì)74.代碼測(cè)試與分析7 4.1 shell 9 測(cè)試與分析7 4.2 system 6 測(cè)試與分析8 4.3 system 7 測(cè)試與分析8參考文獻(xiàn)9心得體會(huì)10附錄111. 前言 本次linux應(yīng)用實(shí)踐課程設(shè)計(jì)通過(guò)在linux系統(tǒng)下完成shell編程和system編程,提高對(duì)linux系統(tǒng)使用的熟練程度,培養(yǎng)以及鍛煉自己的動(dòng)手學(xué)習(xí)能力。通過(guò)完成課程設(shè)計(jì)內(nèi)容,讓自己能夠?qū)inux擁有更加深入的了解。由于基礎(chǔ)知識(shí)欠缺,本次課程設(shè)計(jì)所涉及的內(nèi)容較為基礎(chǔ),同時(shí)也有利于初學(xué)者理解和自己以后的回顧。在這次課程設(shè)計(jì)中,完成了linux shell程序設(shè)計(jì)與system程序設(shè)計(jì),通過(guò)簡(jiǎn)單的程序設(shè)計(jì)掌握基礎(chǔ)的shell編程以及gcc的使用。2. 需求分析 2.1課程設(shè)計(jì)主要任務(wù) 根據(jù)課程設(shè)計(jì)任務(wù)列表,隨機(jī)選取一個(gè)shell編程題目和兩個(gè)系統(tǒng)編程題目(題目編號(hào)之和=15)。本人選取的題目為為shell9,system6,system7。 2.2 開(kāi)發(fā)環(huán)境 本次課程設(shè)計(jì)使用linux操作系統(tǒng),shell采用的為bash,同時(shí)使用vim文本編輯工具編寫(xiě)代碼,使用gcc編譯。各軟件版本號(hào)如下: 操作系統(tǒng):centos 7.2 Bash:4.2.46 gcc :4.8.5 vim:7.4 2.3 相關(guān)工具的的介紹與使用 linux操作系統(tǒng) 本次使用的linux操作系統(tǒng)為centos 7.2,是一個(gè)流行的linux發(fā)行版本,使用的內(nèi)核版本為3.10.0。在本次課程設(shè)計(jì)中,操作系統(tǒng)版本沒(méi)有具體要求,只要使用linux內(nèi)核的操作系統(tǒng)都是可行的,建議將系統(tǒng)安裝到虛擬機(jī)。 bashbash (GNU Bourne-Again Shell) 是大多數(shù)Linux系統(tǒng)默認(rèn)的shell,它能運(yùn)行于大多數(shù)類(lèi)Unix風(fēng)格的操作系統(tǒng)之上。linux系統(tǒng)上都還有其他的Shell,例如tcsh、csh、ash、bsh、ksh等等。shell腳本文件大致都類(lèi)同,使用的方法為在終端使用命令”bash filename” 執(zhí)行shell腳本文件,或者在腳本文件首行添加 “#!/bin/bash” ,再給腳本文件添加執(zhí)行權(quán)限后執(zhí)行shell腳本文件。 gcc 通常所說(shuō)的GCC是GUN Compiler Collection的簡(jiǎn)稱,除了編譯程序之外,它還含其他相關(guān)工具,所以它能把易于人類(lèi)使用的高級(jí)語(yǔ)言編寫(xiě)的源代碼構(gòu)建成計(jì)算機(jī)能夠直接執(zhí)行的二進(jìn)制代碼。gcc的編譯過(guò)程通常包含了四個(gè)步驟,分別為預(yù)處理-編譯-匯編-鏈接四步??梢酝ㄟ^(guò)如下指令來(lái)編譯出一個(gè)可執(zhí)行文件: gcc filename.c 此命令執(zhí)行完后會(huì)生成一個(gè)a.out的可執(zhí)行文件。同時(shí)也可以指定生成的可執(zhí)行文件名,命令如下: gcc filename.c -o filename.out此命令執(zhí)行完后會(huì)生產(chǎn)一個(gè)名為filename.out的可執(zhí)行文件。gcc還有許多命令,詳細(xì)部分不是本文所討論的內(nèi)容。 vim vi命令是UNIX操作系統(tǒng)和類(lèi)UNIX操作系統(tǒng)中最通用的全屏幕純文本編輯器。Linux中的vi編輯器叫vim,它是vi的增強(qiáng)版(vi Improved),與vi編輯器完全兼容,而且實(shí)現(xiàn)了很多增強(qiáng)功能。vi編輯器支持編輯模式和命令模式,編輯模式下可以完成文本的編輯功能,命令模式下可以完成對(duì)文件的操作命令,要正確使用vi編輯器就必須熟練掌握著兩種模式的切換。3. 程序設(shè)計(jì) 3.1概要設(shè)計(jì) 3.1.1 shell9題目分析 問(wèn)題描述:編寫(xiě)一個(gè)shell腳本ex9.sh,根據(jù)鍵盤(pán)輸入的值,給出對(duì)應(yīng)的提示輸出;輸入 AZ,輸出 Uppercase Letter;輸入a-z,輸出 Lowercase Letter;輸入0-9,輸出 Digit;輸入其他,輸出Punctuation, whitespace, or other。 算法分析:可以使用bash shell中的read命令接收鍵盤(pán)的輸入,得到輸入后,read命令將數(shù)據(jù)放入一個(gè)標(biāo)準(zhǔn)變量中。通過(guò)grep命令使用正則表達(dá)式對(duì)變量的值進(jìn)行內(nèi)容匹配,若匹配出大寫(xiě)字母則使用echo命令輸出Uppercase Letter,同理若匹配出小寫(xiě)或數(shù)字則輸出相應(yīng)的內(nèi)容。 3.1.2 system6 題目分析 問(wèn)題描述: 首先建立一個(gè)守護(hù)進(jìn)程,然后讓該守護(hù)進(jìn)程每隔 10s 在/tmp/dameon.log 中寫(xiě)入一句話。 算法分析:首先用fork( )函數(shù)建立一個(gè)子進(jìn)程,建立成功后退出父進(jìn)程,使用setsid( )函數(shù)在子進(jìn)程中創(chuàng)建新會(huì)話,使子進(jìn)程擺脫其他進(jìn)程的影響。再改變當(dāng)前目錄為根目錄,避免在運(yùn)行過(guò)程中對(duì)文件系統(tǒng)操作時(shí)產(chǎn)生的諸多麻煩。重設(shè)文件權(quán)限掩碼,增強(qiáng)守護(hù)進(jìn)程的靈活性。然后關(guān)閉從父進(jìn)程中繼承的文件描述符。做完以上步驟后,在子進(jìn)程中使用open()函數(shù)打開(kāi)/tmp/dameon.log文件,使用sleep()函數(shù)每隔10 秒用write()函數(shù)向文件中寫(xiě)入一句話。 3.1.3 system7 題目分析 問(wèn)題描述: 在tmp目錄下調(diào)用open()函數(shù),以可讀可寫(xiě)的方式創(chuàng)建hello.c文件。open 函數(shù)帶有3個(gè)flag參數(shù):O_CREATE、O_TRUNC、O_WRONLY,文件權(quán)限設(shè)置為0600。 算法分析: 使用chdir將當(dāng)前目錄改為tmp目錄,使用open()函數(shù)打開(kāi)hello.c文件,同時(shí)帶上3個(gè)flag參數(shù):O_CREATE、O_TRUNC、O_WRONLY,文件權(quán)限設(shè)置為0600。3.2 詳細(xì)設(shè)計(jì) 3.2.1 shell 9 過(guò)程設(shè)計(jì)關(guān)鍵代碼: read a while true do if echo $a | grep -q 0-9a-zA-Z;then echo Punctuation, whitespace, or other; fi if echo $a | grep -q A-Z; then echo Uppercase Letter fi . read a done 過(guò)程分析: 使用read命令從命令行中接收鍵盤(pán)的輸入,將接收到的數(shù)據(jù)賦值給變量a,使用echo 將變量a的值通過(guò)管道傳遞到grep命令,使用grep命令對(duì)接收到的值進(jìn)行匹配,使用if根據(jù)值的類(lèi)型輸出相應(yīng)的提示,若是大寫(xiě)字母則輸出 Uppercase Letter,小寫(xiě)字母則輸出Lowercase Letter ,數(shù)字則輸出Digit,若都不是則輸出 Punctuation, whitespace, or other。最后通過(guò)while循環(huán)不斷地重復(fù)輸入檢測(cè)的過(guò)程。 此處使用的read命令為bash自帶的命令,功能為接收鍵盤(pán)輸入并賦值給變量。同樣echo是bash中的輸出命令,用以在命令行中進(jìn)行輸出顯示?!皘”符號(hào)為L(zhǎng)inux中的管道符號(hào),它能處理經(jīng)由前面一個(gè)指令傳出的正確輸出信息,然后將其傳遞給下一個(gè)命令,作為標(biāo)準(zhǔn)的輸入。這里就是將變量a的值傳遞給grep命令,作為grep的輸入。其中,grep命令是linux系統(tǒng)中一種強(qiáng)大的搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行輸出出來(lái)。由于grep命令默認(rèn)將匹配出來(lái)的行輸出,所以在上述代碼中使用了-q參數(shù),用于防止向命令行輸出。在grep命令后的是正則表達(dá)式,A-Z用于匹配大寫(xiě)字母,a-z用于匹配小寫(xiě)字母,0-9用于匹配數(shù)字,0-9a-zA-Z用于進(jìn)行非字母和數(shù)字的匹配。3.2.2 system 6 過(guò)程設(shè)計(jì)關(guān)鍵代碼: pc=fork(); if(pc0) exit(0); setsid(); chdir(/); umask(0); for(i=0;iMAXFILE;i+) close(i); while(1) if(fd=open(/tmp/dameon.log,O_CREAT|O_WRONLY|O_APPEND,0600)0) . write(fd,str,len+1); close(fd); sleep(10); 過(guò)程分析: 首先使用fork()函數(shù)新建一個(gè)子進(jìn)程,若失敗則輸出錯(cuò)誤提示并退出程序,成功則將使用exit()函數(shù)將父進(jìn)程退出,此時(shí)子進(jìn)程變成一個(gè)孤兒進(jìn)程被init進(jìn)程接管。 此時(shí),使用setsid()函數(shù)創(chuàng)建新的會(huì)話,這個(gè)步驟是創(chuàng)建守護(hù)進(jìn)程中最重要的一步。由于在調(diào)用了fork函數(shù)時(shí),子進(jìn)程全盤(pán)拷貝了父進(jìn)程的會(huì)話期、進(jìn)程組、控制終端等,雖然父進(jìn)程退出了,但會(huì)話期、進(jìn)程組、控制終端等并沒(méi)有改變,因此,這還不是真正意義上的獨(dú)立開(kāi)來(lái),而setsid函數(shù)能夠使進(jìn)程完全獨(dú)立出來(lái),從而擺脫其他進(jìn)程的控制。 使用chdir()改變當(dāng)前目錄為根目錄。在使用fork() 創(chuàng)建子進(jìn)程時(shí),子進(jìn)程繼承了父進(jìn)程當(dāng)前的工作目錄,由于在進(jìn)程運(yùn)行中,當(dāng)前目錄所在的文件系統(tǒng)是不能被卸載的,會(huì)對(duì)以后的文件系統(tǒng)操作造成不必要的麻煩,通常的做法是將根目錄作為守護(hù)進(jìn)程的工作目錄,以防止錯(cuò)誤發(fā)生。 同時(shí)由于子進(jìn)程在創(chuàng)建過(guò)程中也繼承了父進(jìn)程的文件權(quán)限掩碼,會(huì)對(duì)子進(jìn)程使用文件帶來(lái)麻煩,這里使用umask()函數(shù)將文件權(quán)限掩碼設(shè)置為0以增加文件使用的靈活性。同樣地,在創(chuàng)建子進(jìn)程時(shí),子進(jìn)程會(huì)從父進(jìn)程那里繼承一些已經(jīng)打開(kāi)的文件。這些文件不會(huì)被守護(hù)進(jìn)程讀寫(xiě),但是同樣會(huì)占用系統(tǒng)資源。在使用setsid()函數(shù)創(chuàng)建會(huì)話后,守護(hù)進(jìn)程已經(jīng)與所屬的控制終端失去了聯(lián)系。因此從終端輸入的字符不可能達(dá)到守護(hù)進(jìn)程,守護(hù)進(jìn)程中用常規(guī)方法(如printf)輸出的字符也不可能在終端上顯示出來(lái)。所以,文件描述符為0、1和2 的3個(gè)文件(常說(shuō)的輸入、輸出和報(bào)錯(cuò))已經(jīng)失去了存在的價(jià)值,也應(yīng)被關(guān)閉。這里將可能存在的文件描述符都使用close()函數(shù)關(guān)閉(設(shè)置一個(gè)較大值來(lái)卻確保從父進(jìn)程繼承的文件描述符都會(huì)被關(guān)閉)。完成上述步驟后便可開(kāi)始子進(jìn)程對(duì)/tmp/daemon.log文件的寫(xiě)入操作。這里使用while循環(huán)不斷地進(jìn)行文件的打開(kāi)、寫(xiě)入、關(guān)閉的操作,若文件打開(kāi)失敗則使用perror()函數(shù)輸出異常,再使用exit(1)函數(shù)異常退出。其中close()函數(shù)用于關(guān)閉打開(kāi)的文件,sleep()函數(shù)用于使守護(hù)進(jìn)程休眠10s。 函數(shù)功能解析: open()函數(shù)用于文件的打開(kāi)或新建,用法為open(constchar* pathname,int flags,mode_t mode)。函數(shù)的第一個(gè)參數(shù)pathname為文件的路徑,第二個(gè)參數(shù)flags為打開(kāi)文件所采取的動(dòng)作具體描述如下:O_RDONLY 以只讀的方式打開(kāi)文件O_WRONLY以只寫(xiě)的方式打開(kāi)文件 O_RDWR以可讀可寫(xiě)的方式打開(kāi)文件O_APPEND 每次寫(xiě)操作都寫(xiě)入文件的末尾O_CREAT 如果指定文件不存在,則創(chuàng)建這個(gè)文件O_EXCL 如果要?jiǎng)?chuàng)建的文件已存在,則返回 -1,并且修改errno的值O_TRUNC 如果文件存在,并且以只寫(xiě)/讀寫(xiě)方式打開(kāi),則清空文件全部?jī)?nèi)容第三個(gè)參數(shù)mode為設(shè)置文件訪問(wèn)權(quán)限的初始值,由一個(gè)八進(jìn)制數(shù)字表示,與用戶掩碼umask變量有關(guān),實(shí)際的訪問(wèn)權(quán)限由mode與umask確定。其中數(shù)字的第一位代表特殊權(quán)限,第二位代表文件所有者,第三位代表文件用戶組,第四位代表其他用戶。在linux文件權(quán)限中,數(shù)字7代表?yè)碛锌勺x可寫(xiě)可執(zhí)行的權(quán)限,數(shù)字6代表?yè)碛凶x寫(xiě)權(quán)限,數(shù)字4代表?yè)碛锌勺x取得權(quán)限,數(shù)字2代表?yè)碛锌蓪?xiě)入的權(quán)限,數(shù)字1代表?yè)碛锌蓤?zhí)行的權(quán)限,數(shù)字0代表沒(méi)有任何權(quán)限。例如具體用法如下:0600 權(quán)限,代表該文件所有者具有可讀、可寫(xiě)的權(quán)限。0400 權(quán)限,代表該文件所有者具有可讀取的權(quán)限。0070 權(quán)限,代表該文件用戶組具有可讀、可寫(xiě)及可執(zhí)行的權(quán)限。0010 權(quán)限,代表該文件用戶組具有可執(zhí)行的權(quán)限。0002 權(quán)限,代表其他用戶具有可寫(xiě)入的權(quán)限。 write()函數(shù)用于文件的寫(xiě)入使用,用法為write(int fd,const void *buf,size_t nbytes) write函數(shù)將buf中的nbytes字節(jié)內(nèi)容寫(xiě)入文件描述符fd.成功時(shí)返回寫(xiě)的字節(jié)數(shù).失敗時(shí)返回-1. 并設(shè)置errno變量. 在網(wǎng)絡(luò)程序中,當(dāng)我們向套接字文件描述符寫(xiě)時(shí)有倆種可能. 1)write的返回值大于0,表示寫(xiě)了部分或者是全部的數(shù)據(jù). 2)返回的值小于0,此時(shí)出現(xiàn)了錯(cuò)誤.我們要根據(jù)錯(cuò)誤類(lèi)型來(lái)處理. 如果錯(cuò)誤為EINTR表示在寫(xiě)的時(shí)候出現(xiàn)了中斷錯(cuò)誤. perror()函數(shù)用法為:perror ( const char * str ),用來(lái)將上一個(gè)函數(shù)發(fā)生錯(cuò)誤的原因輸出到標(biāo)準(zhǔn)設(shè)備(stderr)。參數(shù) str所指的字符串會(huì)先打印出,后面再加上錯(cuò)誤原因字符串。此錯(cuò)誤原因依照全局變量errno(這里的說(shuō)法不準(zhǔn)確,errno是一個(gè)宏,該宏返回左值) 的值來(lái)決定要輸出的字符串。 3.2.3 system 7 過(guò)程設(shè)計(jì) 關(guān)鍵代碼: int fd; chdir(“/tmp”);if(fd = open(hello.c,O_CREAT|O_RDWR,0600)0) . close(fd); 過(guò)程分析:先定義一個(gè)整形變量fd,使用chdir將當(dāng)前工作目錄改為/tmp目錄,再使用open函數(shù)新建hello.c文件(open函數(shù)參數(shù)說(shuō)明請(qǐng)參照system6),其中flag參數(shù)設(shè)置為O_CREATE、O_TRUNC、O_WRONLY,文件權(quán)限設(shè)置為0600。4. 代碼測(cè)試與分析 4.1 shell 9 測(cè)試與分析由運(yùn)行截圖可知,此shell腳本成功完成了任務(wù)要求,能根據(jù)不同的輸入類(lèi)型來(lái)輸出相應(yīng)的提示。除了能單個(gè)輸入以外,還能同時(shí)輸入多個(gè)不同的字符,根據(jù)輸入的字符類(lèi)型輸出相應(yīng)的提示。 4.2 system6 測(cè)試與分析由運(yùn)行截圖可知,此system程序成功建立守護(hù)進(jìn)程,并在/tmp目錄下新建一個(gè)用戶權(quán)限為讀寫(xiě)權(quán)限的dameon.log文件,并每次寫(xiě)入一句話 4.3 system 7 測(cè)試與分析由運(yùn)行截圖可知,此system程序在tmp目錄下成功新建一個(gè)用戶權(quán)限為讀寫(xiě)權(quán)限的hello.c文件。參考文獻(xiàn)1 張澤.Linx Shell編程的藝術(shù)M.北京:電子工業(yè)出版社, 2013:37-235.2 孟慶昌.Linux 教程 第三版M.北京:電子工業(yè)出版社, 2011:100-209.3 梁賢海.守護(hù)進(jìn)程的詳細(xì)總結(jié)EB/OL. /liangxanhai/article/details/7752898,2016-11-26/2016-12-16心得體會(huì) 這幾周的linux課程設(shè)計(jì)過(guò)程,讓我對(duì)linux有了更加深入的了解。盡管在學(xué)習(xí)中經(jīng)常會(huì)遇到各種各樣的問(wèn)題,給課程設(shè)計(jì)的完成帶來(lái)一定的麻煩,但在解決問(wèn)題的過(guò)程中,卻讓我學(xué)到了更多的知識(shí),也鍛煉了自己的學(xué)習(xí)能力。在這次的課程設(shè)計(jì)的驅(qū)使下,我懂得了shell腳本編程的一些基礎(chǔ)知識(shí)和常用命令的使用,以及能夠獨(dú)立的寫(xiě)出一些簡(jiǎn)單的shell腳本文件。同時(shí),在解決對(duì)shell 9中的輸入檢測(cè)問(wèn)題中,我對(duì)正則表達(dá)式有了初步的認(rèn)識(shí),并認(rèn)識(shí)到正則表達(dá)式的強(qiáng)大之處,相信這會(huì)對(duì)我以后學(xué)習(xí)具有積極的作用。在完成system題目設(shè)計(jì)過(guò)程中,讓我對(duì)linux下的c語(yǔ)言編程有了一定的認(rèn)識(shí),掌握了如何使用gcc編譯程序已經(jīng)使用gdb調(diào)試程序。更難道的是,這次的課程設(shè)計(jì)讓我明白了什么是守護(hù)進(jìn)程,子進(jìn)程在創(chuàng)建過(guò)程中與父進(jìn)程產(chǎn)生的復(fù)雜的繼承關(guān)系,同時(shí)也讓我對(duì)linux的文件權(quán)限管理有了一定的認(rèn)識(shí)。附錄shell 9 代碼#!/bin/bashread awhile truedo if echo $a | grep -q 0-9a-zA-Z;then echo Punctuation, whitespace,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論