操作系統(tǒng)報(bào)告_第1頁
操作系統(tǒng)報(bào)告_第2頁
操作系統(tǒng)報(bào)告_第3頁
操作系統(tǒng)報(bào)告_第4頁
操作系統(tǒng)報(bào)告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.操作系統(tǒng)實(shí)驗(yàn)報(bào)告姓名: 學(xué)號(hào): 完成時(shí)間:2012年11月22日目錄:實(shí)驗(yàn)一:UNIX/LINUIX入門.1 實(shí)驗(yàn)二:進(jìn)程管理.3實(shí)驗(yàn)三:線程的管理.10實(shí)驗(yàn)四:利用信號(hào)實(shí)現(xiàn)進(jìn)程間通信.15實(shí)驗(yàn)五:基于消息隊(duì)列和共享內(nèi)存的進(jìn)程間通信.18實(shí)驗(yàn)六:一個(gè)進(jìn)程啟動(dòng)另一個(gè)程序的執(zhí)行.23實(shí)驗(yàn)一 UNIX/LINUIX入門一、實(shí)驗(yàn)?zāi)康?了解UNIX/LINUX運(yùn)行環(huán)境,熟悉UNIX/LINUX的常用基本命令,熟悉和掌握UNIX/LINUX下c語言程序的編寫、編譯、調(diào)試和運(yùn)行方法。二、實(shí)驗(yàn)內(nèi)容1、熟悉UNIX/LINUX的常用基本命令如ls、who、pwd、ps等。2、練習(xí)UNIX/LINUX的文本行編

2、輯器vi的使用方法3、熟悉UNIX/LINUX下c語言編譯器cc/gcc的使用方法。用vi編寫一個(gè)簡單的顯示“Hello,World!”c語言程序,用gcc編譯并觀察編譯后的結(jié)果,然后運(yùn)行它。三、實(shí)驗(yàn)要求按照要求編寫程序,放在相應(yīng)的目錄中,編譯成功后執(zhí)行,并按照要求分析執(zhí)行結(jié)果,并寫出實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)設(shè)計(jì)代碼如下:#includevoid main()printf(hello world);五、運(yùn)行結(jié)果1六、收獲及機(jī)會(huì)此次實(shí)驗(yàn)讓我熟悉了Liunx下的文本行編輯器vi和c語言編譯器cc/gcc的使用方法。七、參考資料實(shí)驗(yàn)指導(dǎo)書2實(shí)驗(yàn)二 進(jìn)程管理一、實(shí)驗(yàn)?zāi)康?加深對進(jìn)程概念的理解,明確進(jìn)程與程序

3、的區(qū)別;進(jìn)一步認(rèn)識(shí)并發(fā)執(zhí)行的實(shí)質(zhì)二、實(shí)驗(yàn)內(nèi)容(1)進(jìn)程創(chuàng)建編寫一段程序,使用系統(tǒng)調(diào)用 fork()創(chuàng)建兩個(gè)子進(jìn)程。當(dāng)此程序運(yùn)行時(shí),在系統(tǒng)中有一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動(dòng)。讓每一個(gè)進(jìn)程在屏幕上顯示一個(gè)字符:父進(jìn)程顯示“a“;子進(jìn)程分別顯示字符”b“和字符“c”。試觀察記錄屏幕上的顯示結(jié)果,并分析原因。(2)進(jìn)程控制修改已編寫的程序,將每一個(gè)進(jìn)程輸出一個(gè)字符改為每一個(gè)進(jìn)程輸出一句話,再觀察程序執(zhí)行時(shí)屏幕上出現(xiàn)的現(xiàn)象,并分析原因。(3)進(jìn)程的管道通信編寫程序?qū)崿F(xiàn)進(jìn)程的管道通信。使用系統(tǒng)調(diào)用pipe()建立一個(gè)管道,二個(gè)子進(jìn)程P1 和P2 分別向管道各寫一句話:Child 1 is sending a

4、message!Child 2 is sending a message!父進(jìn)程從管道中讀出二個(gè)來自子進(jìn)程的信息并顯示(要求先接收P1,再接收P2)。三、實(shí)驗(yàn)要求 按照要求編寫程序,放在相應(yīng)的目錄中,編譯成功后執(zhí)行,并按照要求分析執(zhí)行結(jié)果,并寫出實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)設(shè)計(jì)(1)進(jìn)程創(chuàng)建使用fork()創(chuàng)建兩個(gè)子進(jìn)程,父進(jìn)程等待兩個(gè)子進(jìn)程執(zhí)行完在運(yùn)行。(2)進(jìn)程控制使用fork()創(chuàng)建兩個(gè)子進(jìn)程,父進(jìn)程等待兩個(gè)子進(jìn)程分別輸出一句話在運(yùn)行。(3)進(jìn)程的管道通信建立一個(gè)管道。在程序中先建立一個(gè)子進(jìn)程,然后向管道中輸入數(shù)據(jù),然后從子進(jìn)程中退出到父進(jìn)程,讀出管道數(shù)據(jù),然后再建立一個(gè)子進(jìn)程,寫入數(shù)據(jù),再讀出,

5、即可。代碼如下:(1) 進(jìn)程創(chuàng)建:#include #include #include #include #include #include #define INPUT 0#define OUTPUT 13void main() pid_t pid2; /定義兩個(gè)子進(jìn)程pid0=fork(); /創(chuàng)建第一個(gè)子進(jìn)程if(pid00) /判斷是否創(chuàng)建成功 printf(Fork Failed); exit(-1);else if(pid0 = 0)printf(bn);elsepid1=fork(); /創(chuàng)建另一子進(jìn)程if(pid10) printf(Fork Failed);exit(-1);e

6、lse if(pid1 = 0)printf(cn);elsewait(NULL);printf(an); /父進(jìn)程執(zhí)行exit(0);(2) 進(jìn)程控制:#include #include #include #include #include #include 4#define INPUT 0#define OUTPUT 1void main() pid_t pid2;pid0=fork();if(pid00) printf(Fork Failed); exit(-1);else if(pid0 = 0)printf(this is bn);elsepid1=fork();if(pid10)

7、printf(Fork Failed);exit(-1);else if(pid1 = 0)printf(this is cn);elsewait(NULL);printf(this is an);exit(0);(3) 進(jìn)程的管道通信5#include #include #include #include #includevoid main()int rw2;/*定義子進(jìn)程號(hào)*/pid_t pid2;int count,count2;/*創(chuàng)建無名管道*/ pipe(rw);char *msg1=child 1 process is sending message!n; 字符串msg1char

8、 *msg2=child 2 process is sending message!n; 字符串msg2char buf50,s50;int result;result=pipe(rw);if(result=-1)printf(failed in calling pipe);/*創(chuàng)建子進(jìn)程*/if(pid0 = fork() = -1) printf(Error in forkn);exit(1);if(pid0 = 0) /printf(child 1 process is sending message!n);/*子進(jìn)程向父進(jìn)程寫數(shù)據(jù),關(guān)閉管道的讀端*/close(rw0);write(r

9、w1,msg1, 1+strlen(msg1);close(rw1);exit(0); else if(pid1 = fork() = -1) printf(Error in forkn);exit(1);if(pid1 = 0) /printf(child 2 process is sending message!n);/*子進(jìn)程向父進(jìn)程寫數(shù)據(jù),關(guān)閉管道的讀端*/6close(rw0);write(rw1, msg2, 1+strlen(msg2);close(rw1);exit(0); else/*執(zhí)行父進(jìn)程*/printf(in the spawning (parent) process

10、.n);/*父進(jìn)程從管道讀取子進(jìn)程寫的數(shù)據(jù),關(guān)閉管道的寫端*/close(rw1);count=read(rw0,buf,sizeof(buf);count2=read(rw0,s,sizeof(s);close(rw0);printf(%d %sn,count,buf);printf(%d %sn,count2,s); 五、運(yùn)行結(jié)果 (1)進(jìn)程創(chuàng)建7 (2)進(jìn)程控制8(3)進(jìn)程的管道通信六、收獲及機(jī)會(huì)此次實(shí)驗(yàn)讓我對進(jìn)程和管道有了進(jìn)一步的理解,用fork()創(chuàng)建完子進(jìn)程后,要用exit()返回父進(jìn)程,當(dāng)需要?jiǎng)?chuàng)建兩個(gè)子進(jìn)程的時(shí)候,不能直接在第一個(gè)子進(jìn)程中直接fork(),要返回到父進(jìn)程再用for

11、k()再次創(chuàng)建子進(jìn)程,否則將無法控制。創(chuàng)建完管道后,在向管道中寫入數(shù)據(jù)和從管道中讀出數(shù)據(jù)的時(shí)候,要控制好管道的讀寫控制,不適當(dāng)?shù)年P(guān)閉和開啟管道端口,將不能使得數(shù)據(jù)得到正確的讀寫。這些是我此次實(shí)驗(yàn)最大的收獲,還需要在今后的時(shí)候發(fā)現(xiàn)更多的問題,有更深的理解。七、參考資料實(shí)驗(yàn)指導(dǎo)書9實(shí)驗(yàn)三 線程的管理一、實(shí)驗(yàn)?zāi)康?編寫 Linux 環(huán)境下的多線程程序,了解多線程的程序設(shè)計(jì)方法,掌握最常用的三個(gè)函數(shù)pthread_create,pthread_join 和pthread_exit 的用法二、實(shí)驗(yàn)內(nèi)容 1、主 程 序 創(chuàng) 建 兩 個(gè) 線 程 myThread1 和myThread2 , 每個(gè)線程打印一句

12、話。使用pthread_create(&id,NULL,(void *) thread,NULL)完成。提示:先定義每個(gè)線程的執(zhí)行體,然后在 main 中()創(chuàng)建幾個(gè)線程,最后主線程等待子線程結(jié)束后再退出。2、創(chuàng)建兩個(gè)線程,分別向線程傳遞如下兩種類型的參數(shù) 傳遞整型值 傳遞字符三、實(shí)驗(yàn)要求 按照要求編寫程序,放在相應(yīng)的目錄中,編譯成功后執(zhí)行,并按照要求分析執(zhí)行結(jié)果,并寫出實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)設(shè)計(jì) 先定義2個(gè)線程的帶有參數(shù)的函數(shù),參數(shù)分別為整型(int)和字符型(char),每個(gè)函數(shù)中打印出相對應(yīng)線程的話。在main函數(shù)中,利用pthread_create函數(shù)創(chuàng)建該兩個(gè)線程,在函數(shù)參數(shù)中的第四位,

13、寫入想要傳進(jìn)各進(jìn)程的參數(shù)。最有利用pthread_join等待第二個(gè)結(jié)束后退出。代碼如下:1、主程序創(chuàng)建兩個(gè)線程 myThread1 和myThread2, 每個(gè)線程打印一句話。#include#include#include#includevoid myThread1(void) /線程1printf(this is phread1!n);void myThread2(void) /線程2printf(this is phread2!n);int main(void)10pthread_t id2; int ret;ret=pthread_create(&id0,NULL,(void *)m

14、yThread1,NULL);if(ret!=0)printf(Create pthread error!n);exit(1);ret=pthread_create(&id1,NULL,(void *)myThread2,NULL);if(ret!=0)printf(Create pthread error!n);exit(1);pthread_join(id0,NULL);pthread_join(id1,NULL);printf(This is the main process.n);return(0);2、創(chuàng)建兩個(gè)線程,分別向線程傳遞如下兩種類型的參數(shù)#include#include#i

15、nclude#includevoid myThread1(void *a)int *num;num=(int*)a;printf(create integer is %dn,*num);11void myThread2( void *b)char *x;x=(char*)b;printf(create char is %cn,*x);int main(void)pthread_t id2;int ret;char c=L;char *a=&c;int test=23;int *attr=&test;ret=pthread_create(&id0,NULL,(void *)myThread1,(

16、void*)attr);if(ret!=0)printf(Create pthread error!n);exit(1);pthread_join(id0,NULL);ret=pthread_create(&id1,NULL,(void *)myThread2,(void*)a);if(ret!=0)printf(Create pthread error!n);exit(1);pthread_join(id1,NULL);printf(This is the main process.n);return(0);12五、運(yùn)行結(jié)果1、主程序創(chuàng)建兩個(gè)線程 myThread1 和myThread2,

17、每個(gè)線程打印一句話。2、創(chuàng)建兩個(gè)線程,分別向線程傳遞如下兩種類型的參數(shù)13六、收獲及體會(huì)此次實(shí)驗(yàn)讓我對線程的創(chuàng)建有了進(jìn)一步的理解,在熟練掌握pthread_create和pthread_join兩個(gè)函數(shù)的應(yīng)用上,進(jìn)一步明白了如何向進(jìn)程中傳入?yún)?shù)。七、參考資料實(shí)驗(yàn)指導(dǎo)書14實(shí)驗(yàn)四 利用信號(hào)實(shí)現(xiàn)進(jìn)程間通信一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí) UNIX 類操作系統(tǒng)信號(hào)機(jī)制,編寫Linux 環(huán)境下利用信號(hào)實(shí)現(xiàn)進(jìn)程間通信的方法,掌握注冊信號(hào)處理程序及signal()調(diào)用方法。二、實(shí)驗(yàn)內(nèi)容編寫一個(gè)程序,完成下列功能:實(shí)現(xiàn)一個(gè)SIGINT 信號(hào)的處理程序,注冊該信號(hào)處理程序,創(chuàng)建一個(gè)子進(jìn)程,父子進(jìn)程都進(jìn)入等待。SIGINT

18、信號(hào)的處理程序完成的任務(wù)包括打印接受到的信號(hào)的編號(hào)和進(jìn)程PID。編譯并運(yùn)行該程序,然后在鍵盤上敲Ctrl + C,觀察出現(xiàn)的現(xiàn)象,并解釋。三、實(shí)驗(yàn)要求 按照要求編寫程序,放在相應(yīng)的目錄中,編譯成功后執(zhí)行,并按照要求分析執(zhí)行結(jié)果,并寫出實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)設(shè)計(jì)創(chuàng)建一個(gè)進(jìn)程,在父子進(jìn)程中都注冊一個(gè)用戶敲中斷鍵即Ctrl+C的信號(hào)處理程序,在子進(jìn)程中注冊一個(gè)用戶定義信號(hào)1,在父進(jìn)程中注冊一個(gè)用戶定義信號(hào)2,然后外部接收信號(hào),最后在main函數(shù)中打印出信號(hào)的編號(hào)和進(jìn)程PID。在運(yùn)行時(shí),當(dāng)用戶鍵入Ctrl+C時(shí),會(huì)自動(dòng)打印出父子進(jìn)程pid值,但信號(hào)的編號(hào)始終是父進(jìn)程中注冊的用戶定義信號(hào)。代碼如下:#inc

19、lude#include#include#include#define MAXSTACK 20int stackMAXSTACK;int a=0;int b=0;sem_t sem,sem1;void ReadData1(void)FILE *fp=fopen(1.dat,r);sem_wait(&sem1);int i;for(i=0;i10;i+)fscanf(fp,%d,&stacka+);sem_post(&sem1);sem_post(&sem);fclose(fp);void ReadData2(void)15FILE *fp=fopen(2.dat,r);sem_wait(&se

20、m1);int i;for(i=0;i8;i+)fscanf(fp,%d,&stacka+);sem_post(&sem1);sem_post(&sem);fclose(fp);void HandleData1(void)int i;sem_wait(&sem);for(i=0;i4;i+)int m=stackb+;int n=stackb+;printf(Plus:%d+%d=%dn,m,n,m+n);void HandleData2(void)int i;sem_wait(&sem);for(i=0;i4;i+)int m=stackb+;int n=stackb+;printf(mul

21、:%d*%d=%dn,m,n,m*n);int main(void)pthread_t t1,t2,t3,t4;sem_init(&sem,0,0);sem_init(&sem1,0,1);pthread_create(&t1,NULL,(void *)HandleData1,NULL);pthread_create(&t2,NULL,(void *)HandleData2,NULL);pthread_create(&t3,NULL,(void *)ReadData1,NULL);pthread_create(&t4,NULL,(void *)ReadData2,NULL);pthread_j

22、oin(t1,NULL);16五、運(yùn)行結(jié)果六、收獲及體會(huì)此次實(shí)驗(yàn)讓我學(xué)會(huì)了在Linux 環(huán)境下利用信號(hào)實(shí)現(xiàn)進(jìn)程間通信的方法,掌握注冊信號(hào)處理程序及signal()調(diào)用方法,也掌握了接收信號(hào)的寫法。并在試驗(yàn)中,可通過用戶自己輸入信號(hào)來產(chǎn)生信號(hào)的編號(hào),但是通過注冊SIGINT信號(hào)處理程序打印出的信號(hào)編號(hào)只是父進(jìn)程中創(chuàng)建的用戶定義信號(hào)2,這點(diǎn)還是需要進(jìn)一步討論。但總的來說,對利用信號(hào)實(shí)現(xiàn)進(jìn)程間的通信,有了更深入的一個(gè)了解,收獲很大。七、參考資料實(shí)驗(yàn)指導(dǎo)書17實(shí)驗(yàn)五 基于消息隊(duì)列和共享內(nèi)存的進(jìn)程間通信一、實(shí)驗(yàn)?zāi)康?Linux系統(tǒng)的進(jìn)程通信機(jī)構(gòu)(IPC)允許在任意進(jìn)程間大批量地交換數(shù)據(jù)。本實(shí)驗(yàn)的目的是了

23、解和熟悉:1. Linux支持的消息通信機(jī)制及其使用方法2. Linux系統(tǒng)的共享存儲(chǔ)區(qū)的原理及使用方法。二、實(shí)驗(yàn)內(nèi)容 1.消息的創(chuàng)建、發(fā)送和接收 使用消息調(diào)用msgget()、msgsnd()、msggrev()、msgctrl()編制長度為1K的消息的發(fā)送和接收程序。2.共享存儲(chǔ)區(qū)的創(chuàng)建、附接和斷接使用系統(tǒng)調(diào)用shmget()、shmat()、shmctl(),編制一個(gè)與上述功能相同的程序。三、實(shí)驗(yàn)要求 按照要求編寫程序,放在相應(yīng)的目錄中,編譯成功后執(zhí)行,并按照要求分析執(zhí)行結(jié)果,并寫出實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)設(shè)計(jì)1.消息隊(duì)列:先定義一個(gè)消息結(jié)構(gòu),包含消息類型和文本長度。在SERVER函數(shù)中,首先

24、獲得一個(gè)KEY為75的消息的描述符,然后利用do while循環(huán)來判斷當(dāng)消息類型為1的時(shí)候打印輸出。在CLIENT函數(shù)中,先獲得消息隊(duì)列,然后利用for循環(huán)將消息類型從10賦值到1,發(fā)送隊(duì)列,并打印輸出。最后在main函數(shù)中調(diào)用這兩個(gè)函數(shù)。#include #include #include #include #define MSGKEY 75 struct msgform /*消息結(jié)構(gòu)*/long mtype; /*消息類型*/char mtexe1030; /*文本長度*/ msg;int msgqid,i;void CLIENT( )int i;msgqid=msgget(MSGKEY,

25、0777); /*獲得消息的描述符msgqid*/for(i=10;i=1;i-) /*將消息類型由10到1發(fā)送*/msg.mtype=i;18printf(client)sentn);msgsnd(msgqid,&msg,1024,0); /*發(fā)送消息msg入msgid消息隊(duì)列*/exit(0);void SERVER( ) msgqid=msgget(MSGKEY,0777|IPC_CREAT); do msgrcv(msgqid,&msg,1030,0,0); /*從隊(duì)列msgid接受消息msg*/ printf(server)receiven); while(msg.mtype!=1)

26、; /*消息類型為1時(shí),釋放隊(duì)列*/ msgctl(msgqid, IPC_RMID,0); exit(0);main() if(fork() SERVER();else CLIENT( );wait(0);wait(0);2.共享存儲(chǔ)區(qū):先獲取共享區(qū),KEY為75,并獲得描述符,然后將該共享存儲(chǔ)區(qū)附接到addr這個(gè)虛擬地址上,如消息隊(duì)列類似,利用while循環(huán)從10到1打印輸出,并將i值賦給addr。在SERVER中,創(chuàng)建共享存儲(chǔ)區(qū),并將起始地址也設(shè)置為addr,服務(wù)進(jìn)程共享存儲(chǔ)區(qū),所以直接用while循環(huán)輸出打印“receive”。代碼如下:#include#include#include

27、#define SHMKEY 75 /*定義共享區(qū)關(guān)鍵詞*/int shmid,i;int *addr;CLIENT()int i;19shmid=shmget(SHMKEY,1024,0777); /*獲取共享區(qū)*/addr=shmat(shmid,0,0); /*共享區(qū)起始地址為addr*/ for(i=9;i=0;i-)while(*addr!= -1); printf(client)sentn); *addr=i; exit(0);SERVER()shmid=shmget(SHMKEY,1024,0777|IPC_CREAT); addr=shmat(shmid,0,0); do*ad

28、dr=-1; /*服務(wù)進(jìn)程使用共享區(qū)*/while(*addr=-1);printf(server)receivedn); while(*addr);shmctl(shmid,IPC_RMID,0);exit(0);main()if(fork()SERVER();if(fork()CLIENT();wait(0);wait(0);20五、運(yùn)行結(jié)果1消息隊(duì)列:2、共享存儲(chǔ)區(qū):21六、收獲及體會(huì)此次實(shí)驗(yàn)讓我對消息隊(duì)列的獲取、傳送和共享存儲(chǔ)區(qū)有了更加深入的了解。理論上來說應(yīng)該是client和server交替出現(xiàn),實(shí)際上是client先發(fā)送了兩條,而且最后server接收了2條,但二者分別發(fā)送和接收了

29、10條信息,這個(gè)和設(shè)想是一樣的。通過實(shí)驗(yàn)我了解到,message的傳送和控制并不保證完全同步,當(dāng)一個(gè)程序不再激活狀態(tài)的時(shí)候,它完全可能繼續(xù)睡眠,造成上面現(xiàn)象,在多次send后才receive。共享存儲(chǔ)區(qū)的運(yùn)行結(jié)構(gòu)和預(yù)想完全吻合,沒有疑問。七、參考資料實(shí)驗(yàn)指導(dǎo)書22實(shí)驗(yàn)六 一個(gè)進(jìn)程啟動(dòng)另一個(gè)程序的執(zhí)行一、實(shí)驗(yàn)?zāi)康?編寫Linux環(huán)境下,fork()與exec()的結(jié)合使用實(shí)現(xiàn)一個(gè)進(jìn)程啟動(dòng)另一個(gè)程序的執(zhí)行的基本方法,掌握exec()的集中調(diào)用方法。二、實(shí)驗(yàn)內(nèi)容父進(jìn)程從終端讀取要執(zhí)行的命令,并交給子進(jìn)程執(zhí)行。父進(jìn)程等待子進(jìn)程結(jié)束,并打印子進(jìn)程的返回值。提示:從終端讀取要執(zhí)行的命令可用fgets()實(shí)現(xiàn)。三、實(shí)驗(yàn)要求 按照要求編寫程序,放在相應(yīng)的目錄中,編譯成功后執(zhí)行,并按照要求分析執(zhí)行結(jié)果,并寫出實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)設(shè)計(jì)

溫馨提示

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

評論

0/150

提交評論