freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

linux命令解釋器的設計本科畢業(yè)論文-wenkub.com

2025-06-16 14:13 本頁面
   

【正文】 :任務書、開題報告、外文譯文、譯文原文(復印件)。作者簽名: 日期: 年 月 日學位論文版權使用授權書本學位論文作者完全了解學校有關保留、使用學位論文的規(guī)定,同意學校保留并向國家有關部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。作者簽名:        日  期:         學位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導師的指導下獨立進行研究所取得的研究成果。 }} 畢業(yè)設計(論文)原創(chuàng)性聲明和使用授權說明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設計(論文),是我個人在指導教師的指導下進行的研究工作及取得的成果。 for(i = 0。 pid1 = 0。 execv(buf,arg)。 continue。 if(is_founded(arg[0]) == 0){ printf(This mand is not founded!\n)。 free(input)。\039。 for(。i++){ if(input[i] == 39。 continue。 arg[1] = (char *)malloc(sizeof(char)*j)。i=input_len。%39。}if(strcmp(arg[0],bg) == 0){ add_history(input)。}if(strcmp(arg[0],jobs) == 0){ add_history(input)。 strcpy(arg[1],buf)。i++) buf[j++] = input[i]。 continue。 break。 } buf[j++] = input[i]。 input[i+1] == 39。amp。 arg[k] = (char *) malloc(sizeof(char)*j)。\039。i=input_len。} is_pr = 1。 free(input)。){ if(input[i] == 39。||input[i] == 39。/****************解析指令**************//****************管道和重定向命令單獨處理**************/for(i = 0,j = 0,k = 0。} buf[input_len] = 39。while(c != 39。||c == EOF) 。/****************獲取用戶輸入**************/while((c = getchar()) == 39。action,NULL)。 sigfillset(amp。 while(1){ char c,*arg[20]。 void setflag()。 void jobs_cmd()。 void getenviron()。 int pipel()。 陶華敏等譯. 北京: 機械工業(yè)出版社,  [14] Linux寶典 / (美) []Christopher Negus著。 劉洪濤譯. 北京: 清華大學出版社,  [6] 實戰(zhàn)Linux編程精髓 / (以) []Arnold Robbins著。在此向老師表示深深的感謝和崇高的敬意!在臨近畢業(yè)之際,我還要借此機會向在這四年中給予我諸多教誨和幫助的各位老師表示由衷的謝意,感謝他們四年來的辛勤栽培。3)熟悉了shell的實現(xiàn)的流程,以及系統(tǒng)調用是怎么運行的,還有內核與shell的關系是怎樣的。我們所做的shell的命令解釋器就做完了,其實工作還有很多沒有做,但是最基本的功能已經(jīng)做的差不多了。這個信號會使該進程繼續(xù)運行。同樣,如果我們希望一個作業(yè)在前臺使用,就可以使用fg%作業(yè)號就可以完成。但是當一個作業(yè)被掛起后,我們希望該作業(yè)在后臺運行,那么我們就可以用bg%作業(yè)號把對應的作業(yè)有掛起狀態(tài)修改到放到后臺執(zhí)行,就會調用bg_cmd函數(shù)。而信號處理函數(shù)signal可以捕捉到這個SIGTSTP信號。相反的是,當輸入fg命令時,就會把后臺或者掛起的作業(yè)重新放在前臺來執(zhí)行。jobs命令jobs的實現(xiàn),要用到鏈表。 close(pipe_in)。} if(pipe_in!=NO_PIPE){ dup2(pipe_in,0)。 if(pid == 0){ if(pipe_in == NO_PIPE) close(pipe_in)。 else pipe_in = NO_PIPE。這個循環(huán)初始化了10對指向NO_PIPE(1)的文件描述符。 fd[i][FD_WRITE] = NO_PIPE。其實對于管道,跟重定向是由異曲同工指出的,都需要系統(tǒng)調用函數(shù)來是子進程的文件描述符改變,就是dup2函數(shù)。但是基本的shell的思想大致就是這樣的。waitpid所等待的子進程由它的第個參數(shù)pid決定。函數(shù)waitpid格式:pid_t waitpid(pid_t pid,int *status,int options)。ElseIf(is_bg== 0)Waitpid(pid,amp。其實Linux會使用一個稱作COW的技術,該技術是當中間有一個進程如果想要修改所復制的空間時,才會真正的做復制動作。然后就直接執(zhí)行命令。格式 include int access(const char *pathname,int mode)。 } return 0。 while(envpath[k]!=NULL){ strcpy(buf,envpath[k])。i++) free(arg[i])。 arg[k] = NULL。判斷是內部命令的話,就會執(zhí)行相對應的操作。當用戶輸入空格時,就會區(qū)分命令和參數(shù),如:“l(fā)s l”。){ is_bg = 1。 amp。 j = 0。 else{ buf[j++] = 39。 39。對于普通的命令,當檢測到is_pr的值是0的時候,就進行下面的程序,下面的代碼就是主要普通命令和內部命令進行處理。 break。}else{ redirect(input,input_len)。|39。39。i=input_len。解析指令時,對輸入到數(shù)組input的命令內容完成解析,然后得到該命令和對應的參數(shù)。這樣命令前期初始化工作就已經(jīng)完成了。}在上面的程序中我們看到函數(shù)打開一個名字是myshell_profile的自己編寫的文件,這是一個剛開始的配置文件,用戶自己把配置的路徑寫到這個文件中。} while (n = line(fd,buf)){ getenviron(n,buf)。void init_environ(){ int fd,n,i。 NODE *head.*end定義head指針來指向鏈表的表頭,用end指針來指向鏈表的表尾。 //進程號 char cmd[100]。如果輸入文件不存在,則認為是出現(xiàn)了錯誤。進程將從標準輸入文件中讀取輸入數(shù)據(jù),將正確的數(shù)據(jù)輸出到標準輸出文件,將不正確的信息輸出到標準錯誤文件中。就是說管道的一端只能用于讀的作用,用fd[0]表示,將其稱為讀端;同樣,管道的另一端則只能用于寫的作用,由fd[1]來表示,將其稱為寫端。數(shù)據(jù)的讀出與寫入:一個進程只能向一個管道中的一頭寫入數(shù)據(jù),管道另一頭的進程會讀出這個數(shù)據(jù)內容,這些寫入的數(shù)據(jù)每次都會放在管道緩沖區(qū)的最后,但是讀數(shù)據(jù)時必須要從從緩沖區(qū)的頭部開始讀數(shù)據(jù)。后臺運行時可以在父進程中進行操作。3. jobs查看當前有多少在后臺運行的命令。但是如果這些命令行字符串是內部命令,那么就沒有必要建立該作業(yè)的數(shù)據(jù)結構,因為本來就已經(jīng)在shell程序中了,沒必要在多此一舉了。用戶一般在輸入命令時,都會在提示符后面,那么這一行命令就叫做“命令行字符串”,shell用一個數(shù)組保存字符串,當這個作業(yè)運行完成后,shell才會釋放保存的空間,也包括后臺的作業(yè)和掛起的作業(yè)。如果一個命令中帶有一些amp。、會話與終端一個對話期,有它自己對應的控制的終端( controlling terminal)。當執(zhí)行如下兩條命令時:$proc1|proc2amp。)、重定向(、)和管道(l)等,最后才判斷命令是什么屬性,才能繼續(xù)往后面執(zhí)行。如exit、cd、pwd、fg/bg等等,其實Linux的內部命令并不是那么多,并且很多的內部命令我們是幾乎不用的,所以實現(xiàn)簡單的內部命令還是比較少的。 c) 根據(jù)命令的不同,來調用相應的程序。GCC也變成GNU Co mpiler Collection(即GNU編譯器族)的縮寫。GNU C編譯器是一個非常優(yōu)越的編譯器,它在Linux等系統(tǒng)的運行是非常重要的,可以說,這個編譯器是效率很高的編譯器,也是大多數(shù)開源系統(tǒng)的使用的最多的編譯器。但是,它還是需要成本的,它并不是無拘無束的可以自由的使用,使用的前提是對于社會來說,它是有益的,并不是惡意的使用它,人們可以隨時下載,更正編寫自由軟件的權利。在初始化的文件中有很多變量,根據(jù)不同的程序來設置相應的變量,所以用戶在使用起來還是比較方便的。bash又增加了很多新的功能:命令行歷史與編輯、目錄棧、作業(yè)控制、函數(shù)、別名、數(shù)組、整數(shù)運算(底數(shù)可以是264),還增加了一些Korn shell的功能,如擴展的元字符,select循環(huán)和let命令等。由于Korn shell是對Bourne shell的拓展,由學習了C shell的優(yōu)點,所以用戶數(shù)很多。20世紀80年代中期,ATamp。C shell就是完善了Bourne shell的不足,是用戶與系統(tǒng)的交互更加的方便。Bourne Shell是建立在Algol的程序的基礎上的。如果用戶想了解自己裝的Linux是用的哪些Shell,直接在終端輸入命令行:$cat/etc/shellls。Korn shell是AT&T的David Korn開發(fā)的,它是Bourne shell的個擴展集,在增強改進C shell的基礎上,Korn shell添加了更多功能。C Shell完善了很多不同的功能,就像查詢命令行歷史,作業(yè)的前后臺控制等。這三種Shell功能是很類似的,如果作為腳本的話,它們的還是有不同的。Shell會根據(jù)用戶輸入的命令后來執(zhí)行命令:根據(jù)命令行的關鍵字來判斷是那種命令,然后執(zhí)行命令。它對進程,內存,文件和通信等都無時無刻的管理著。如果我們是經(jīng)常使用UMX/Linux系統(tǒng)的研發(fā)人員,我們對shell的功能會有很深的認識和理解。目前主要有下列版本的Shell: Bourne Shell:由貝爾爾實驗室研發(fā)的?,F(xiàn)在在Linux中稍微流行的窗口管理器就是是KDE。該命令的輸出就不會在屏幕上顯示,而是寫入到自己的目標文件中。進程將從標準輸入文件中讀取輸入數(shù)據(jù),將正確的數(shù)據(jù)輸出到標準輸出文件,將不正確的信息輸出到標準錯誤文件中。本論文就是模擬一個shell命令解釋器,包括:管道、內部命令、外部命令、重定向命令。這就意味著我們把不多的資源利用完成很多的需求,而嵌入式的設計在PC上編程是有很大不同的,它其實只需要一個很大程序的比較小的一方面就可以滿足它的需求,因此我們必須把一些無用的程序刪掉來換成空間。 目 錄摘 要 1前言 21 緒論 3 Shell的定義 3 UNIX Shell 3 shell的歷史 4 shell的職責 42開發(fā)環(huán)境和開發(fā)工具介紹 6 6 63 模擬shell設計 7 7 8 作業(yè)及作業(yè)前后調度實現(xiàn)方法 會話與終端 9 10 &、bg、fg等信號的思想 10 管道 11 114 Shell的實現(xiàn) 13 13 程序結構 13 13 14 15 16 17 185 結束語 20致謝 21參考文獻 22附錄 23Linux命令
點擊復制文檔內容
物理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1