




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、期末考核內(nèi)容每人按照老師的要求,順序或隨即從下面shell編程部分和環(huán)境編程部分分別選擇一題,然后在課堂上進行編程、演示運行結(jié)果,并回答老師至少三個問題。如不能回答,則不通過考核。通過考核后,應(yīng)根據(jù)兩個題目的題目分析、編程思想、相關(guān)知識、流程圖、算法設(shè)計(如有)、源代碼及注釋,完成實踐課程報告,并打印后提交。老師根據(jù)平時考勤、演示結(jié)果、回答問題情況、實驗報告情況打分。定于第九周周四上午進行考核。請各位同學(xué)做好準(zhǔn)備。Shell編程部分:1、 設(shè)計一個程序cuts,它由標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),獲取有第一個參數(shù)n和第二個參數(shù)m所限定范圍的數(shù)據(jù),n和m都是整數(shù) ,即從輸入的字符串中抽取第n個字符至第m個字符
2、之間的所有字符(包括這兩個字符)并顯示出來。$ cuts 11 14This is a test of cuts program(回車)test(顯示結(jié)果)P145 4.18#!/bin/bashread -p 請輸入一段內(nèi)容: TEXTread -p 請輸入兩個整數(shù),中間用空格分開: num1 num2echo $TEXT | cut -b $num1-$num2 2/dev/null2、 利用for循環(huán)將當(dāng)前目錄下的.c文件移到指定的目錄下,并按文件大小排序,顯示移動后指定目錄的內(nèi)容。P144 4.12#!/bin/bash for file in ls -1 /root/a | grep
3、 .*.c mv /root/a/$file /root/b ls -lS /root/b3、 編寫一個shell腳本,求斐波那契奇數(shù)列的前10項及總和。P144 4.14#!/bin/bashi=1j=0for ( k=0; k100”;如果兩個數(shù)字的和小于等于100并且大于10,就輸出“x+y10”;如果xy,則求出x除以y的余數(shù)并輸出“x mod y = ?(把計算的值代替問號)”,否則求出y除以x的余數(shù)并輸出“y mod x = ?”.P127 例4.135、 編寫一個shell腳本,并利用函數(shù)實現(xiàn)數(shù)列求和運算。即主程序接受兩個數(shù)字,分別作為數(shù)列頭和數(shù)列尾,如果第一個數(shù)字不小于第二個數(shù)
4、字則輸出“wrong number”,否則將這兩個數(shù)字傳遞給函數(shù);函數(shù)把這兩個數(shù)字中間的數(shù)字加起來求和,并輸出。如:當(dāng)輸入 3 6時,函數(shù)計算 3+4+5+6的值并輸出。#!/bin/shfun() sum=0 for i in seq $1 $2 do sum=expr $i + $sum done echo $sumecho Please input 2 number:read a bexpr $a + 0 1/dev/null 2&1if $? -ne 0 ;then echo wrong number exit 1;fiexpr $b + 0 1/dev/null 2&1if $? -
5、ne 0 ;then echo wrong number exit 1;fiif $a -ge $b ;then echo wrong number exit 1;fifun $a $b6、 編寫特洛伊木馬shell腳本。以文本方式登陸界面,接收用戶輸入的名字和密碼。一旦用戶在這種偽裝界面登陸,就獲取用戶名和密碼,并保存在指定的文件中。接著睡眠幾秒,然后顯示錄入錯誤的信息,使用戶以為輸入有誤。最后在調(diào)用真正的登陸程序,允許用戶正常登陸。P107 例4.67、 編寫shell腳本,創(chuàng)建一個5個元素的數(shù)組,輸出各個元素的值8、 編寫一個腳本,用于統(tǒng)計所指定文件的行數(shù)總數(shù)。輸出結(jié)果為各個文件的名字+
6、行數(shù),以及總行數(shù)。如:當(dāng)輸入./腳本名 file1 file2,腳本計算file1和file2兩個文件的總行數(shù)#!/bin/bash#statistics the raws of the files you inputusage() echo usage:please input = two filenamestotalline=0if $# -lt 2 ; then usagefiwhile $# -ne 0 doline=cat $1 |wc -lecho $1:$linetotalline=$ $totalline+$line shiftdoneecho -echo totalline:
7、 $totalline9、 編寫一個shell腳本,根據(jù)鍵盤輸入的值,給出對應(yīng)的提示;輸入A Z ,輸出Uppercase Letter;輸入a-z,輸出Lowercase Letter;輸入0-9,輸出Digit;輸入其他,輸出Punctuation, whitespace, or other#!/bin/bashexportLC_ALL=Creadawhile$adocase$ainA-Z)echoUppercaseLetter;a-z)echoLowercaseLetter;0-9)echoDigit;*)echoPunctuation,whitespace,orother;esacre
8、adadone10、 編寫shell腳本,提示用戶輸入用戶名,并判斷此用戶名是否存在與系統(tǒng)用戶中P123 例4.11Linux環(huán)境編程部分:1、 編寫一個程序,把一個文件的內(nèi)容復(fù)制到另一個文件上,即實現(xiàn)簡單的copy功能,要求:只用open()/read()/write()/close()系統(tǒng)調(diào)用,程序的第一個參數(shù)為源文件,第二個參數(shù)為目的文件。P225 7.3#include #include #include #include #include #include #define BUF_SIZE 1024*8int main() int fds, fdd; char bufBUF_SIZE
9、; size_t hasread = 0; fds = open(filea, O_RDONLY); fdd = open(fileb, O_WRONLY, O_CREAT); if(fds & fdd) while(hasread = read(fds, buf, sizeof(buf) 0) write(fdd, buf, hasread); close(fds); close(fdd); 2、 編寫一個程序它利用fork()創(chuàng)建一個子進程;父進程打開一個文件,父子進程都向文件中寫入信息(利用write),表明是在那個進程中;每個進程都打印兩個進程的ID號。最后父進程執(zhí)行wait()。P2
10、25 7.5#include#include#include#include#include#includeint main()pid_t pid;int fd;char *buf1=(char *)malloc(20);char *buf2=(char *)malloc(20);strcpy(buf1,this is child process:);strcpy(buf2,this is parent process:);if(fd=open(file,O_CREAT|O_RDWR)0)printf(open file error);if(pid=fork()=0)if(write(fd,b
11、uf1,strlen(buf1)0)printf(write error!);exit(0);printf(pid:%d,getpid();close(fd);elseif(write(fd,buf2,strlen(buf1)0)printf(write error!);exit(0);close(fd);wait(NULL);printf(ppid:%d,getppid();return 0;3、 編寫一個程序,他創(chuàng)建一個子進程。父進程向子進程發(fā)送一個信號,然后等待子進程終止;子進程接受信號,輸出自己的狀態(tài)信息,最后終止自己。P225 7.9#include#include#include#
12、include#include#includeint main()pid_t pid;int fd;char *buf1=(char *)malloc(20);char *buf2=(char *)malloc(20);strcpy(buf1,this is child process:);strcpy(buf2,this is parent process:);if(fd=open(file,O_CREAT|O_RDWR)0)printf(open file error);if(pid=fork()=0)if(write(fd,buf1,strlen(buf1)0)printf(write
13、error!);exit(0);printf(pid:%d,getpid();close(fd);elseif(write(fd,buf2,strlen(buf1)0)printf(write error!);exit(0);close(fd);wait(NULL);printf(ppid:%d,getppid();return 0;4、 寫管道的程序打開管道,main函數(shù)里的參數(shù)由用戶輸入要寫入的內(nèi)容。讀管道創(chuàng)建管道,讀出了用戶寫入用戶寫入管道的內(nèi)容。這兩個函數(shù)用的是非阻塞度寫管道5、 打開open函數(shù)創(chuàng)建的文件,然后對此文件進行讀寫操作(將文件打開屬性改為可讀可寫,文件權(quán)限要做相應(yīng)更改)。
14、接著,寫入“Hello!I am writing to this file!”,此時文件指針位于文件尾部。接著再使用lseek函數(shù)將文件指針移動文件開始處,并讀出10個字節(jié)并將其打印出來#include#include#include#include#include#includeintmain()intfd=-1;fd=open(zhidao_561804018.dat,O_CREAT|O_TRUNC|O_RDWR,0666);if(fd0)perror(open);return-1;charbuff64;strcpy(buff,Hello!Iamwritingtothisfile!);in
15、tcount=strlen(buff);if(write(fd,buff,count)0)perror(write);return-1;if(lseek(fd,0,SEEK_SET)0)perror(lseek);return-1;if(read(fd,buff,10)0)close(fd);fd=-1;return0;6、 首先建立一個守護進程,然后讓該守護進程每隔10s在/tmp/dameon.log中寫入一句話#include #include #include #include #include #include #include #define MAXFILE 65535int ma
16、in(void) pid_t pc; int i,fd,len; char *buf=This is a Dameonn; len=strlen(buf); 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) perror(open:); exit(1); write(fd,buf,len+1); close(fd); sleep(
17、10); 7、 在tmp目錄下調(diào)用open函數(shù),以可讀可寫的方式創(chuàng)建hello.c文件。open函數(shù)帶有3個flag參數(shù):O_CREATE、O_TRUNC、O_WRONLY,文件權(quán)限設(shè)置為0600。8、 首先創(chuàng)建一個子進程,然后讓其子進程暫停5s(使用sleep函數(shù))。接下來對原有的父進程使用waitpid函數(shù),并使用參數(shù)WNOHANG使該父進程不會阻塞。若有子進程退出,則waitpid返回子進程號;若沒有子進程退出,則waitpid返回0,并且父進程每隔1s循環(huán)判斷一次9、 首先使用fork創(chuàng)建一個子進程,接著為了保證子進程不在父進程調(diào)用kill之前退出,在子進程中使用raise函數(shù)向子進程
18、發(fā)送SIGSTOP信號,使子進程暫停。接下來,再在父進程中調(diào)用kill向子進程發(fā)送信號,請使用SIGKIL10、 首先創(chuàng)建一個共享內(nèi)存區(qū),之后將其映射到本進程中,最后再解除這種映射關(guān)系。/*創(chuàng)建共享內(nèi)存*/int shmid;void *shmadd;if (shmid = shmget(IPC_PRIVATE,BUFSZ,0666) 0 )perror(“fail to shmget ”);exit(-1);syetem(“ipcs m”);/*映射共享內(nèi)存*/if (shmadd = shmat(shmid,0,0) = NULL )perror(“fail to shmat ”);exi
19、t(-1);syetem(“ipcs m”);/*刪除共享內(nèi)存*/if (shmdt(shmadd) 0 )perror(“fail to shmdt ”);exit(-1);syetem(“ipcs m”);if (shmctl(shmid, IPC_RMID, NULL) 0 )perror(“fail to shmctl ”);exit(-1);syetem(“ipcs m”);11、 首先把SIGQUIT、SIGINT兩個信號加入信號集,然后將信號集設(shè)為阻塞狀態(tài),并在該狀態(tài)下使程序暫停5s.接下來再將信號集設(shè)置為非阻塞狀態(tài),再對這兩個信號分別操作,其中SIGQUIT執(zhí)行默認操作,而SIGINT執(zhí)行用戶自定義函數(shù)的操作。#include #include #include void my_op(int);main() sigset_t new_mask; struct sigaction act; sigemptyset(&act.sa_mask); act.sa_flags=0; act.sa_handler=my_op; if(sigaction(SIGINT,&act,NULL) /注冊信號SIGINT處理函
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華東師范大學(xué)《風(fēng)景園林設(shè)計實驗古典園林景觀設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢工程大學(xué)郵電與信息工程學(xué)院《立體設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京師范大學(xué)泰州學(xué)院《大學(xué)美育》2023-2024學(xué)年第二學(xué)期期末試卷
- 南昌航空大學(xué)《電路(下)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南檢察職業(yè)學(xué)院《造型基礎(chǔ)(工設(shè))》2023-2024學(xué)年第二學(xué)期期末試卷
- 河源廣東河源紫金縣專門學(xué)校駐校教官招聘7人筆試歷年參考題庫附帶答案詳解
- 山東農(nóng)業(yè)大學(xué)《組成原理與接口技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西體育職業(yè)學(xué)院《聯(lián)合創(chuàng)作預(yù)案》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國礦業(yè)大學(xué)(北京)《基礎(chǔ)造型》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南2025年河南省工業(yè)學(xué)校招聘20人筆試歷年參考題庫附帶答案詳解-1
- 市政工程監(jiān)理規(guī)劃范本(完整版)
- 幼兒園小班語言:《我上幼兒園》 PPT課件
- 高標(biāo)準(zhǔn)農(nóng)田項目規(guī)劃設(shè)計和評審要點
- 小學(xué)三年級下冊綜合實踐活動.水果拼盤-(14張)ppt
- 部編版二年級語文下冊第三單元課文《傳統(tǒng)節(jié)日》PPT課件
- 北京市城市建設(shè)節(jié)約用地標(biāo)準(zhǔn)
- 開學(xué)第一課我們開學(xué)啦主題班會PPT課件(帶內(nèi)容)
- 電源線檢驗報告RVV
- 體育訓(xùn)練隊隊規(guī)
- 八字命理漫畫版
- 電梯工程開工報告(直梯)(共1頁)
評論
0/150
提交評論