Linu程序設計實驗報告(ahut)_第1頁
Linu程序設計實驗報告(ahut)_第2頁
Linu程序設計實驗報告(ahut)_第3頁
Linu程序設計實驗報告(ahut)_第4頁
Linu程序設計實驗報告(ahut)_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《Linux試驗報告安徽工業大學計算機學院202361試驗一Linux1、試驗目的學習和把握Linux2、試驗內容和步驟1:以user_login用戶身份并使用telnet登錄Linux戶和口令。步驟2:使用創立的用戶賬戶和口令登錄Linux3:使用pwd命令觀看當前的工作名目,然后用ls使用-a,-l,-F,-A,-lF4:在當前名目下建立一個名為testtest將/etc名目下的文件passwd〔cp源文件目的名目〕。觀看當前名目下的passwd2步驟5:嘗試向當前名目下的passwd/etc/passwd〔可使用echo“字符串”>>文件的命令〕,看看操作能否成功,假設不能成功,請說明緣由。用cat命令掃瞄文件password的內容,用moreless件的內容。比較這幾個命令的不同之處步驟6:用ls命令查看test下文件的權限,用mv命令更改文件password的文件名為test.txt,嘗試用chown和chgrp更改文件的屬主為root、組為root,看看能否成功,不成功,請說明緣由。嘗試用chomd將文件權限為“-rw ”。看看能否成功,不成功,請說明緣由。37:rm命令刪除testrmdir命令刪除test名目。〔想一想有沒有一條命令將名目及名目下的全部文件刪除,寫出這條命令〕8:使用psman命令獵取ps當前終端進程執行狀況的ps4步驟9:使用df命令查看當前系統已安裝的文件系統的空間使用狀況,記錄結果。步驟10:使用du命令查看用戶的工作名目占用了多少空間,記錄結果。步驟11:使用free命令查看內存資源的使用狀況,記錄結果。_512:使用man獵取targzip的幫助信息,嘗試將test然后到另外一名目tmp13:嘗試執行“ls–l>tmp”,看看這條命令的執行會消滅什么結果,解釋一下這條命令。ls–ltmp14:嘗試執行find/usr/src-name*.c-print|xargsgrep“#include”,看看這條命令的執行會消滅什么結果,解釋一下這條命令。6解釋:匹配查找列表輸出/usr/src下以.c結尾的文件中含有“#include”的內容。15:執行caldatecal:輸出當月的日歷,date:輸出當前的時間。16:執行命令clearlogout,退出系統。〔想一想有沒有其他的方法,寫出這種方法〕還可以用命令:exit步驟17:執行命令shutdown,關閉系統。〔想一想有沒有更簡潔的命令,寫出這條命令〕還可以用命令:init03、試驗結論通過本次試驗讓我生疏了linux系統下一些簡潔命令的用法,對系統有個初步的生疏,為以后的學習墊下良好的根底,增加了自己對linux的深厚的興趣。7Shell1、試驗目的學習和把握vi編輯器的根本使用方法。學習和把握編寫簡潔的shell2、試驗內容和步驟vi1:root用戶身份登錄進入Linux系統。步驟2:啟動Vi,切換到輸入模式,輸入一段英文:Thisiaanexercise!WeuseVitoeditit.Left,down,up,right步驟3:嘗試匹配其中的一串字符,寫出這命令及執行結果。步驟4:嘗試替換其中的一串字符,寫出這命令及執行結果。步驟5:嘗試復制/刪除其中的一行或幾行文本,寫出命令及執行結果。步驟6:嘗試復制/刪除其中的一個單詞或幾個字符,寫出命令及執行結果。7:嘗試使用鼠標復制文本,寫出命令及執行結果。8:嘗試存盤退出操作,寫出命令。:wq或:xshell1:使用Vi2-18步驟2:嘗試運行該程序,假設不能運行,緣由是什么,怎樣修改。3:執行程序,寫出程序的執行結果。步驟4:閱讀程序,把握shell函數的編寫方法,補全函數file_run。foriin`ls`doiftest-x$i;thenecho$ifidone步驟5:修改程序中的函數uers,使得顯示在線用戶時不分行〔提示:可以使用循環,對每個在線用戶分別處理。echo“thereare`who|wc-l`usersonline“foriin“whoare\n`who|awk”{print$1}”`“9doecho-n$iecho-n““done3、試驗結論本次試驗讓我在試驗一的根底上進一步了解linux下的一些常用命令,同時學習穩固了linuxshell編程。4、程序清單清單2-1menuMYDATE=`date+%d/%m/%y`THIS_HOST=`hostname-s`USER=`whoami`file_run{echo“youmustcompleteit“}uers{echo“thereare`who|wc-l`usersonline“echo-e“whoare\n`who|awk”{print$1}”`“}while:do10tputclearcat<<aaaUser:$USER Host:$THIS_HOST Date:$MYDATE:Listsubdirectoryincurrentdirectory:Listfilesincurrentdirectorywhichcanrun:SeewhoisonthesystemH:HelpscreenQ:ExitMenuaaa

echo-e-n“\tYourChoice[1,2,3,H,Q]>“readCHOICEcase$CHOICEinls-l|awk”/^d/{print$8}”;;file_run;;uers;;H|h)cat<<aaaThisisthehelpscreen,nothinghereyettohelpyou!aaa;;Q|q)exit0;;*)echo-e“\t\007unkownuserresponse“;;esacecho-e-n“\n\n\tHitthereturnkeytocontinue“readDUMMYdone11試驗三LinuxC1、試驗目的學習和把握gccLinux學習并把握Linux的文件操作。62、試驗內容和步驟1:使用Vi3-13-2“file.in”和文件“file.out”,盡可能的使文件“file.in”大一些。步驟2:利用gccgdbGcc–olist3_1list3_1.cGcc–olist3_2list3_2.c3:認真觀看這兩個程序,比較標準C的文件操作和Linux的系統調用open、read、write答:一個是底層的系統調用,另一個是庫函數調用,其效率略有差距,同時參數也不同。4:3-2,并使用time。修改之前的系統時間: [root@localhost~]#time./list3_2real 0m18.791suser 0m0.824ssys 0m17.317s修改之后的時間: [root@localhost~]#time./list3_2real 0m0.049suser 0m0.000ssys 0m0.036s5:3-33-4,寫出執行結果,并比較他們fseek和lseek使用方法上的異同3的運行結果是:在root名目下創立了文件hole.file12abcdefghij6:學習并分別使用標準C的文件操作函數和Linux息進展操作〔插入、修改和刪除〕的C,structstu_infostructstu_info{charstu_num[12];charname[10];shortintsex;/*01*/charmobile_phone[12];};3、試驗結論linuxc語言編程。4、程序清單//程序清單3-1#include<stdio.h>#include<stdlib.h>intmain(void){charc;FILE*in,*out;if((in=fopen(“file.in“,“r“))==NULL){perror(“fileopenerror!“);exit(0);}out=fopen(“file.out“,“w“);while((c=fgetc(in))!=EOF)fputc(c,out);}13//程序清單3-2#include<unistd.h>#include<sys/stat.h>#include<fcntl.h>intmain{// charblock[1024];charc;intin,out;intnread;in=open(“file.in“,O_RDONLY);out=open(“file.out“,O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR);//將注釋翻開,并將兩條語句的后一句注釋掉,重編譯執行。// while((nread=read(in,block,sizeof(block)))>0)while((nread=read(in,&c,sizeof(c)))>0)// write(out,block,nread);write(out,&c,nread);}//程序清單3-3#include<stdio.h>#include<unistd.h>#include<fcntl.h>#include<sys/stat.h>#include<sys/types.h>charbuf1[]=“abcdefghij“;charbuf2[]=“ABCDEFGHIJ“;voiderr_exit(char*err_s){perror(err_s);exit(1);}intmain(void){FILE*fp;if((fp=fopen(“hole.file“,“w“))==NULL)14err_exit(“fileopenfail!“);if(fwrite(buf1,sizeof(buf1),1,fp)!=1)err_exit(“filewritebuf1error!“);if(fseek(fp,40,SEEK_SET)==-1)err_exit(“fseekerror!“);if(fwrite(buf2,strlen(buf2),1,fp)!=1)err_exit(“filewritebuf2error!“);fclose(fp);}//程序清單3-4#include<stdio.h>#include<unistd.h>#include<fcntl.h>#include<sys/stat.h>#include<sys/types.h>charbuf1[]=“abcdefghij“;charbuf2[]=“ABCDEFGHIJ“;voiderr_exit(char*err_s){perror(err_s);exit(1);}intmain(void){intfd;if((fd=open(“hole.file“,O_WRONLY|O_CREAT/*|O_APPEND,0644*/))==-1)err_exit(“fileopenfail!“);if(write(fd,buf1,10)!=10)err_exit(“filewritebuf1error!“);if(lseek(fd,40,SEEK_SET)==-1)err_exit(“lseekerror!“);if(write(fd,buf2,10)!=10)err_exit(“filewritebuf2error!“);}15試驗四Linux1、試驗目的學習和把握fork等系統調用的根本使用方法。Linux2、試驗內容與步驟1:使用Vi4-1fork法。步驟2:使用Vi4-2、4-34-4gcc寫出編譯命令和編譯結果,假設不成功,嘗試利用gdb[root@localhost~]#gcc-o4_24_2.c4_2.c:43:2:warning:nonewlineatendoffile[root@localhost~]#./4_2childfailed.4-3[root@localhost~]#gcc-ofatherfather.cfather.c:Infunction`main”:father.c:7:error:`l”undeclared(firstuseinthisfunction)father.c:7:error:(Eachundeclaredidentifierisreportedonlyoncefather.c:7:error:foreachfunctionitappearsin.)father.c:8:error:stray”\129”inprogramfather.c:8:error:syntaxerrorbeforenumericconstantfather.c:8:error:stray”\132”inprogramfather.c:10:2:warning:nonewlineatendoffile[root@localhost~]#gcc-ochildchild.cchild.c:7:2:warning:nonewlineatendoffile[root@localhost~]#./childhellohellochild,child.步驟3:寫出編譯這三個程序的makefile,然后利用make進展編譯,談談這么做的好處。可以節約勞動時間,讓三個程序同時編譯,簡化了操作。步驟4:運行這三個程序,寫出運行結果。4-2的運行結果:4_2.c:43:2:warning:nonewlineatendoffile[root@localhost~]#./4_216Parentisusingpipewrite.child,child. 4-3的運行結果:[root@localhost~]#./fatherParentisusingpipewrite.4-4的運行結果是: [root@localhost~]#./childhellochild!hellochild!child,child.步驟5:屏幕上顯示出的執行結果是哪一個進程執行的結果?Father.c6:父進程中的printf沒有,由于父進程的標準輸出已經被重定向。7:利用父子進程間的管道通信方式,改寫試驗36程,其中父進程承受用戶對文件的操作命令然后通過管道發給子進程,子進程完成對文件的實際操作。3、試驗結論學習了進程的操作方法,了解了dup的工作原理。4、程序清單//程序清單4-1#include<unistd.h>#include<stdio.h>#include“err_exit.h“intglobal=5;intmain(void){pid_tpid;char*string=“thesearevaluesbeforefork:“;intlocal=10;printf(“beforefork***\n\n“);if((pid=fork)<0)err_exit(“forkerror“);if(pid==0){string=“Iamchild.“;17printf(“\nMypidis%d,%s\n““pid=%d\nglobal=%d\nlocal=%d\n“,getpid,string,pid,global,local);global++;}else{string=“Iamparent.“;printf(“\nMypidis%d,%s\n““pid=%d\nglobal=%d\nlocal=%d\n“,getpid,string,pid,global,local);local++;}printf(“%s\nNow,global=%d,local=%d\n“,string,global,local);exit(EXIT_SUCCESS);}//4-2管道程序#defineSTD_INPUT0 //定義標準輸入設備描述符#defineSTD_OUTPUT1 //定義標準輸出設備描述符intfd[2];main{staticcharprocess1[]=”father”,process2[]=”child”;pipe(fd); //定義管道pipeline(process1,process2); //調用自定義函數pipelineexit(1); //程序完畢}pipeline(char*process1,char*process2){inti;if((i=f

溫馨提示

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

評論

0/150

提交評論