《Linux编程环境》期末考试样题及参考答案.docx
- 文档编号:2173899
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:9
- 大小:22.35KB
《Linux编程环境》期末考试样题及参考答案.docx
《《Linux编程环境》期末考试样题及参考答案.docx》由会员分享,可在线阅读,更多相关《《Linux编程环境》期末考试样题及参考答案.docx(9页珍藏版)》请在冰豆网上搜索。
《Linux编程环境》期末考试样题及参考答案
《UNIX编程环境》期末考试样题及参考答案
一.给出完成下列各项功能所需要的UNIX系统命令。
要求:
给出实现这一功能的完整命令;不能给出完整命令可以仅给出所需要的命令名称。
必须陈述利用了这个命令的哪个功能或选项。
每题2分,共24分。
1.删除文件为-i的文件。
答:
使用rm命令,由于命令会默认以减号开始的命令行参数为命令处理的选项而不是处理对象,所以需要使用特殊的选项--以显式的方式说明选项的结束。
命令为rm---i
2.命令netstat有很多选项,如何得知使用哪个选项可以打印出ip的路由表?
答:
使用man命令,man命令可以在线查阅命令的使用手册,使用命令mannetstat查出netstat命令的使用手册,看看哪个选项和什么命令格式用来打印出ip的路由表。
3.删除当前目录下的子目录tmp及该目录下属的所有文件和子孙目录。
答:
使用rm命令,rm命令有个选项可以递归地删除一个子目录,命令为
rm–rtmp
4.在你完成上机作业过程中,使用什么命令将源程序文件myrm.c编译、链接生成可执行文件?
可执行文件是什么名字?
如何运行?
答:
使用gcc命令或者make,实现编译和链接
gccmyrm.c–omyrm
或者:
makemyram
生成的可执行文件名按照惯例为myrm,一般情况下当前环境变量PATH不包括当前目录,所以,运行这个可执行程序应当加上当前路径,命令为:
./myrm命令有个选项可以递归地删除一个子目录,命令为
./myrm–rtmp
5.检索目录src以及其子孙目录中的所有文件名后缀为.c和.h文件,查找哪些文件中含有字符串TPDU,并列出在这文件中的行号。
答:
使用find命令和grep命令。
find命令可以在指定的目录树
中查找满足某个条件的文件或目录,并对查找到的满足条件的对象执行一个动作。
指定查找条件为“文件名后缀为.c和.h”,动作为“查找哪些文件中含有字符串TPDU,并列出在这文件中的行号”,分别是find的-name和-exec选项。
完整的命令为:
findsrc–name”*.[ch]”–execgrep–nTPDU{}/dev/null\;
6.统计出由用户liu创建并且正在运行的进程数目。
答:
使用ps命令列表出系统中所有进程,过滤后仅保留用户liu创建的进程(用grep),每个进程占一行,用wc命令统计一共有多少行即可。
ps–ef|grepliu|wc–l
7.去掉文件list.txt中的所有空行(所谓空行指:
行内不含有任何除空格之外的字符),存为新文件list-new.txt。
答:
使用grep命令可以用正则表达式对文本文件过滤,-v选项用于筛选掉能匹配指定正则表达式的行,描述一个空行的正则表达式为^*$,即:
从行首开始(^),有零个到多个空格(*),然后是行尾($),命令为:
grep–v’^*$’list.txt>list-new.txt
8.程序文件fexc.c约有2000行,保留了一个备份fexc0.c后另个程序员在fexc.c中作了多处修改,如何找出他在原先程序的基础上作了哪些修改?
答:
diff命令可以对文本文件进行比较,找出两个文件的差别。
由于C语言源程序文件为文本文件,可以用diff完成上述功能。
完整的命令为:
difffexc0.cfexc.c
9.目录mywork.dir上周的备份目录为mywork.bak,其中仅有一小部分文件作了修改,仅仅将被修改过的文件和新创建的文件拷贝到备份目录。
答:
cp命令实现了增量拷贝的功能,增量拷贝的基本功能就是检查源目录下的文件和目的目录下的同名文件的最后一次修改时间,当源文件的最后一次修改时间晚于目的文件的最后一次修改时间,或者同名的目的文件不存在时,才执行复制操作。
完整的命令为:
cp–urmywork.dirmywork.bak
10.程序xserverd正在运行,随时间的变化,系统的内存资源越来越少。
如何判断是否是该程序在运行过程中存在内存泄漏导致内存资源越来越少?
答:
ps命令的-l选项,可以打印出进程当前的SZ属性,即:
进程的虚拟内存空间大小。
当进程在运行过程中存在内存泄漏时,进程的虚拟内存空间大小会逐渐随时间增大。
使用ps–l|grepxserverd可以看出进程xserverd属性。
11.系统在当前一段时间内出现CPU负载很重现象,系统的响应时间明显增大。
怎样判断是哪些程序的运行占用了过多的CPU而导致的系统负载过重?
答:
ps命令可以打印出进程当前的TIME属性,即:
进程运行占用的CPU时间(不计睡眠时间)。
使用ps命令观察哪些进程的TIME属性随时间在同步增长,就可以判断出哪些程序的运行占用了过多的CPU而导致的系统负载过重。
12.df–h/opt命令的执行格式如下:
FilesystemSizeUsedAvailUse%Mountedon
/dev/sda690G47G39G55%/opt
命令列出了磁盘使用情况,如何自动地在终端上每1分钟给出一次报告?
答:
自动地重复执行一个命令,利用shell的循环机制。
让shell睡眠60秒钟的命令为sleep60。
整个命令为:
whiletrue;dodf–h/opt;sleep60;done
二、判断题每题2分共20分,下列说法是否正确,并简述理由。
注意:
理由陈述不正确不得分。
1.UNIX文件权限设计为简单的三级控制,用户liu对用户sun的文件data.txt要么具有全部的读权限,要么不可以读。
因此,没有办法限制liu只对文件的指定部分读。
答:
错误。
可以利用SUID权限,用户sun将文件data.txt的读写权限设置为rw-------,由文件所有者sun自己编写程序以实现对文件的访问,程序中的访问当然可以限制只对文件的指定部分读,但是该程序文件的属性应当为rws--x--x,用户liu只有执行这个可程序程序文件才能实现对文件data.txt的访问。
2.命令ln仅允许对普通文件实现硬连接,对目录不许硬连接操作。
所以,所有目录的link数总为1。
答:
错误。
尽管命令ln仅允许对普通文件实现硬连接,对目录不许硬连接操作,但是,目录的硬连接由系统自动实现,当前目录下的.文件和子目录中的..文件,均是指向当前目录的硬连接,在创
建新目录时系统自动实现。
所以,目录的link数会大于1,一般情况下目录的link数=直属子目录数+2。
3.如果父进程不对僵尸进程进行处理,那么,僵尸进程过多,即使系统有足够内存,也可能导致系统无法正常工作。
答:
正确。
进程执行的结束阶段产生僵尸进程,原进程所占有的数据段、指令段、堆栈段内存都已经释放,系统仅为僵尸进程保存一个进程表表项。
但是,僵尸进程过多会因为占用光内核中全部的进程表表项,导致无法启动新的进程。
4.fork后得到两个几乎完全相同的进程,父子进程可以共享代码段,但是父子进程必须有独立的数据段和堆栈段。
设代码段,数据段和堆栈段的大小分别为a,b,c,那么,fork()后父子进程占用的物理内存总大小是a+2(b+c)。
答:
错误。
尽管fork后,从逻辑上可以得到两个几乎完全相同的进程,父子进程有独立的数据段、堆栈段和指令段,但是,操作系统可以通过使用copy-on-write技术等方式,使得父子进程共享同一段物理内存,除了代码段可以共享之外,也可以共享数据段和堆栈段。
5.unix的进程调度程序能做到保证大部分进程处于运行状态,只有少数进程处于阻塞状态,否则,系统的性能将大大下降。
答:
错误。
事实上,恰恰相反,大部分进程处于“阻塞”状态,只有所等待的条件满足后才能转换为“运行状态”。
进程调度程序仅调度那些运行状态的进程。
将进程的状态从“阻塞”转换为“运行”不是调度程序的任务,仅取决于外部条件的变化。
6.如果某个文件的权限设置为文件主不许读写,那么其他任何人都不可读写该文件。
答:
错误。
超级用户root不受权限的限制。
UNIX在验证一个普通用户的进程对文件的访问权限严格按照下列三步进行:
如果文件主与进程主相同,那么,使用文件主权限,不再查组和其他用户的权限;
如果文件主与进程主不同,但文件主与进程主同组,那么,只使用组权限,不使用关于其他用户的权限;
如果文件主与进程主不同,文件主与进程主又不同组,那么,使用文件关于其他用户的权限。
所以,可把文件许可权置为文件主不可读写但同组用户可读写,即使文件主是该组用户之一也不行事实上;而且无论权限怎么设置,都不妨碍root用户操作它。
7.使用socket利用TCP协议编写通信程序,bind调用只允许在服务端使用,客户端使用这一调用没有任何意义。
答:
错误。
bind调用的目的是指定一个网络连接的本地端点名,事实上,恰恰相反,大部分进程处于“阻塞”状态,只有所等待的条件满足后才能转换为“运行状态”。
进程调度程序仅调度那些运行状态的进程。
将进程的状态从“阻塞”转换为“运行”不是调度程序的任务,仅取决于外部条件的变化。
8.UNIX操作系统被设计得非常健壮,所以程序在运行过程中不会产生死锁。
答:
错误。
像信号量等,UNIX仅给出了一组信号量操作的机制,如果应用程序设计的多个进程之间对信号量的操作处置不当,仍然可能导致死锁。
操作系统没有办法检测出应用进程之间的逻辑操作不正确产生的死锁。
使用管道等其他的进程之间通信的系统调用,也可能产生死锁。
9.UDP不能保证可靠递交,在局域网环境下,假设通信线路是可靠的,尽管如此,两台计算机用UDP交换数据也有可能会丢失数据。
答:
正确。
尽管通信没有任何故障,但是UDP通信的双方并没有流量控制,所以,可能会由于接收缓冲区溢出的原因导致操作系统被迫丢弃数据。
10.Windows用户使用命令行命令ftp从Unix下载文件ftas.c,即使没有病毒破坏,成功下载结束后,下载的文件与原文件也有可能在文件大小(字节数)上不符。
答:
正确。
这种情况是可能存在的,FTP支持ASCII方式和BINARY方式的文件传输。
前者会把数据文件理解为文本文件,会在通信的两个机器之间进行文本文件格式的转换。
UNIX和Windows对文本文件的定义方式不同,Windows行间保留“换行”和“回车”两个字符,但是UNIX行间仅包括“换行”一个字符。
所以在使用ASCII方式在Windows和Unix间交换文件可能会导致下载的文件与原文件在文件大小(字节数)上不符的情况。
三.简答题与编程题(共56分)
1.(5分)用户liu有一个重要的文件report.txt,为保证该文件不会被无意地修改,移走和删除,应当采取什么措施?
答:
为保证文件不会被无意地修改,取消文件的写权限;为保证文件不会被无意地移走和删除,取消该文件所在目录的写权限。
2.(5分)关于文本文件处理的实用程序都有哪些?
这些程序都有哪些共同的特点?
为什么要这样设计这些命令?
答:
关于文本文件处理的实用程序有很多,如:
head,tail,sort,grep,wc,cat,od,sed,awk,等等。
这些程序的共同特点是:
每个小程序的功能设置简洁;当不指定处理对象时从标准输入获取处理数据;当指定文件名时,从指定的文件中获取处理数据,而且允许指定多于一个的文件名;处理结果在标准输出文件中输出。
这样设计这些命令的原因是:
可以利用系统提供的输入、输出重定向和管道,连接和组合多个命令,提供灵活又丰富的使用功能;允许指定多于一个的文件作为处理对象可以和shell的文件名通配符替换功能配合使用。
体现了“策略和机制相分离”的设计理念。
系统设计不复杂却可以提供强大的功能。
3.(5分)什么是“忙等待”?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux编程环境 Linux 编程 环境 期末 试样 参考答案