




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品文档期末考核内容每人按照老师的要求,顺序或随即从下面shell编程部分和环境编程部分分别选择一题,然后在课堂上进行编程、演示运行结果,并回答老师至少三个问题。如不能回答,则不通过考核。通过考核后,应根据两个题目的题目分析、编程思想、相关知识、流程图、算法设计(如有)、源代码及注释,完成实践课程报告,并打印后提交。老师根据平时考勤、演示结果、回答问题情况、实验报告情况打分。定于第九周周四上午进行考核。请各位同学做好准备。shell编程部分:1、设计一个程序cuts,它由标准输入读取数据,获取有第一个参数n和第二个参数m所限定范围的数据,n和m都是整数,即从输入的字符串中抽取第n个字符至第m个
2、字符之间的所有字符(包括这两个字符)并显示出来。$cuts1114thisisatestofcutsprogram(回车)test(显示结果)p1454.18#!/bin/bashread-p请输入一段内容:textread-p请输入两个整数,中间用空格分开:num1num2echo$text|cut-b$num1-$num22/dev/null2、利用for循环将当前目录下的.c文件移到指定的目录下,并按文件大小排序,显示移动后指定目录的内容。p1444.12#!/bin/bashforfileinls-1/root/a|grep.*.cmv/root/a/$file/root/bls-ls
3、/root/b3、编写一个shell脚本,求斐波那契奇数列的前10项及总和。p1444.14#!/bin/bashi=1j=0for(k=0;k100”如果两个数字的和小于等于100并且大于10,就输出“x+y10”;如果xy,则求出x除以y的余数并输出“xmody=?(把计算的值代替问号)”,否则求出y除以x的余数并输出“ymodx=?”.p127例4.135、编写一个shell脚本,并利用函数实现数列求和运算。即主程序接受两个数字,分别作为数列头和数列尾,如果第一个数字不小于第二个数字则输出“wrongnumber”,否则将这两个数字传递给函数;函数把这两个数字中间的数字加起来求和,并输出
4、。如:当输入36时,函数计算3+4+5+6的值并输出。#!/bin/shfun()sum=0foriinseq$1$2dosum=expr$i+$sumdoneecho$sumechopleaseinput2number:readabexpr$a+01/dev/null2&1if$?-ne0;thenechowrongnumberexit1;fiexpr$b+01/dev/null2&1if$?-ne0;thenechowrongnumberexit1;精品文档精品文档fiif$a-ge$b;thenechowrongnumberexit1;fifun$a$b6、编写特洛伊木马shell脚本。
5、以文本方式登陆界面,接收用户输入的名字和密码。一旦用户在这种伪装界面登陆,就获取用户名和密码,并保存在指定的文件中。接着睡眠几秒,然后显示录入错误的信息,使用户以为输入有误。最后在调用真正的登陆程序,允许用户正常登陆。p107例4.67、编写shell脚本,创建一个5个元素的数组,输出各个元素的值8、编写一个脚本,用于统计所指定文件的行数总数。输出结果为各个文件的名字+行数,以及总行数。如:当输入./脚本名file1file2,脚本计算file1和file2两个文件的总行数#!/bin/bash#statisticstherawsofthefilesyouinputusage()echousa
6、ge:pleaseinput=twofilenamestotalline=0if$#-lt2;thenusagefiwhile$#-ne0doline=cat$1|wc-lecho$1:$linetotalline=$totalline+$lineshiftdoneecho-echototalline:$totallinez9、编写一个shell脚本,根据键盘输入的值,给出对应的提示;输入a,输出uppercaseletter;输入a-z,输出lowercaseletter;输入0-9,输出digit;输入其他,输出punctuation,whitespace,orother#!/bin/ba
7、shexportlc_all=creadawhile$a精品文档精品文档docase$aina-z)echouppercaseletter;a-z)echolowercaseletter;0-9)echodigit;*)echopunctuation,whitespace,orother;esacreadadone10、编写shell脚本,提示用户输入用户名,并判断此用户名是否存在与系统用户中p123例4.11linux环境编程部分:1、编写一个程序,把一个文件的内容复制到另一个文件上,即实现简单的copy功能,要求:只用open()/read()/write()/close()系统调用,程序
8、的第一个参数为源文件,第二个参数为目的文件。p2257.3#include#include#include#include#include#include#definebuf_size1024*8intmain()intfds,fdd;charbufbuf_size;size_thasread=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);精品文档精品文
9、档close(fdd);2、编写一个程序它利用fork()创建一个子进程;父进程打开一个文件,父子进程都向文件中写入信息(利用write),表明是在那个进程中;每个进程都打印两个进程的id号。最后父进程执行wait()。p2257.5#include#include#include#include#include#includeintmain()pid_tpid;intfd;char*buf1=(char*)malloc(20);char*buf2=(char*)malloc(20);strcpy(buf1,thisischildprocess:);strcpy(buf2,thisispare
10、ntprocess:);if(fd=open(file,o_creat|o_rdwr)0)printf(openfileerror);if(pid=fork()=0)if(write(fd,buf1,strlen(buf1)0)printf(writeerror!);exit(0);printf(pid:%d,getpid();close(fd);精品文档精品文档elseif(write(fd,buf2,strlen(buf1)0)printf(writeerror!);exit(0);close(fd);wait(null);printf(ppid:%d,getppid();return0;
11、3、编写一个程序,他创建一个子进程。父进程向子进程发送一个信号,然后等待子进程终止;子进程接受信号,输出自己的状态信息,最后终止自己。p2257.9#include#include#include#include#include#includeintmain()pid_tpid;intfd;char*buf1=(char*)malloc(20);char*buf2=(char*)malloc(20);strcpy(buf1,thisischildprocess:);strcpy(buf2,thisisparentprocess:);if(fd=open(file,o_creat|o_rdwr)
12、0)printf(openfileerror);if(pid=fork()=0)精品文档精品文档if(write(fd,buf1,strlen(buf1)0)printf(writeerror!);exit(0);printf(pid:%d,getpid();close(fd);elseif(write(fd,buf2,strlen(buf1)0)printf(writeerror!);exit(0);close(fd);wait(null);printf(ppid:%d,getppid();return0;4、写管道的程序打开管道,main函数里的参数由用户输入要写入的内容。读管道创建管道,
13、读出了用户写入用户写入管道的内容。这两个函数用的是非阻塞度写管道5、打开open函数创建的文件,然后对此文件进行读写操作(将文件打开属性改为可读可写,文件权限要做相应更改)。接着,写入“hello!iamwritingtothisfile!”,此时文件指针位于文件尾部。接着再使用lseek函数将文件指针移动文件开始处,并读出10个字节并将其打印出来#include#include#include#include#include精品文档精品文档#includeintmain()intfd=-1;fd=open(zhidao_561804018.dat,o_creat|o_trunc|o_rdwr
14、,0666);if(fd0)perror(open);return-1;charbuff64;strcpy(buff,hello!iamwritingtothisfile!);intcount=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中写入一句话#
15、include#include#include#include#include#include#include#definemaxfile65535intmain(void)精品文档精品文档pid_tpc;inti,fd,len;char*buf=thisisadameonn;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,060
16、0)0)perror(open:);exit(1);write(fd,buf,len+1);close(fd);sleep(10);7、在tmp目录下调用open函数,以可读可写的方式创建hello.c文件。open函数带有3个flag参数:o_create、o_trunc、o_wronly,文件权限设置为0600。8、9、首先创建一个子进程,然后让其子进程暂停5s(使用sleep函数)。接下来对原有的父进程使用waitpid函数,并使用参数wnohang使该父进程不会阻塞。若有子进程退出,则waitpid返回子进程号;若没有子进程退出,则waitpid返回0,并且父进程每隔1s循环判断一次精
17、品文档精品文档10、首先使用fork创建一个子进程,接着为了保证子进程不在父进程调用kill之前退出,在子进程中使用raise函数向子进程发送sigstop信号,使子进程暂停。接下来,再在父进程中调用kill向子进程发送信号,请使用sigkil精品文档精品文档11、首先创建一个共享内存区,之后将其映射到本进程中,最后再解除这种映射关系。/*创建共享内存*/intshmid;void*shmadd;if(shmid=shmget(ipc_private,bufsz,0666)0)perror(“failtoshmget”);exit(-1);syetem(“ipcsm”);/*映射共享内存*/i
18、f(shmadd=shmat(shmid,0,0)=null)perror(“failtoshmat”);exit(-1);syetem(“ipcsm”);/*删除共享内存*/if(shmdt(shmadd)0)perror(“failtoshmdt”);精品文档精品文档exit(-1);syetem(“ipcsm”);if(shmctl(shmid,ipc_rmid,null)0)perror(“failtoshmctl”);exit(-1);syetem(“ipcsm”);12、首先把sigquit、sigint两个信号加入信号集,然后将信号集设为阻塞状态,并在该状态下使程序暂停5s.接下来再将信号集设置为非阻塞状态,再对这两个信号分别操作,其中sigquit执行默认操作,而sigint执行用户自定义函数的操作。#include#include#includevoidmy_op(int);main()sigset_tnew_mask;structsigactionact;sigemptyset(&act.sa_mask);act.sa_flags=0;act.sa_handler=my_op;if(sigaction(sigint,&act,null)/注册信号sigin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于委托合同范本
- 水利水电工程新技术应用试题与答案
- 行政管理公共关系的有效沟通试题及答案
- 经济学的决策分析试题及答案
- 2025年:探究附条件合同的定义及其在合同法律中的作用
- 工程经济品牌价值评估试题及答案
- 预防甲状腺病的有效建议
- 江南文化特色课件
- 2025年市政工程国际视野试题及答案
- 经济学与法律的结合试题及答案探讨
- DB11T 1399-2017 城市道路与管线地下病害探测及评价技术规范
- 德意莎门窗授权经销商合作协议书(代理商合作协议空白版)
- 大国兵器学习通超星期末考试答案章节答案2024年
- DB35T 2212-2024消防远程监控系统技术要求
- 班级音乐会主题班会
- 东亚飞蝗标准化养殖示范基地建设项目可行性实施报告
- 抖音本地生活商家直播培训
- 陕西省2024年中考地理试卷(附解析)
- 土地互换永久合同范本
- 血源性传染病职业暴露的预防处理
- (正式版)QC∕T 625-2024 汽车用涂镀层和化学处理层
评论
0/150
提交评论