您好,欢迎访问三七文档
湖北科技学院计算机学院2014年秋2012级物联网工程(本科)专业《LINUX高级编程》期末考查试卷(闭卷、100分钟)一、单选题(每小题2分,共60分)1.关于Linux内核版本的说法,以下错误的是(C)。A.表示为主版本号.次版本号.修正号B.1.2.3表示稳定的发行版C.1.3.3表示稳定的发行版D.2.2.5表示对内核2.2的第5次修正2.下列不是可执行程序运行时内存结构的是(D)。A.代码区B.数据区C.栈堆区D.变量区3.下列有关fork()函数返回值说法错误的是(D)。A.正常情况下,fork调用一次,会返回两次。B.返回值等于0表示在子进程返回。C.返回值大于0表示在父进程中返回。D.大于0的返回值为父进程PID号。4.进程调用wait将被阻塞,直到(D)。A.用户按任意键B.收到时钟信号C.子进程被创建D.子进程结束5.下列关于网络编程的叙述中,错误的是(C)。A.一个完整的网络程序应该包含两个独立的程序,它们分别运行在客户端和服务器端。B.相同条件下UDP发送数据的速度要比TCP快。C.当使用UDP编程时,若函数sendto()成功返回,表示系统发出的数据被通讯的对方准确接收到了。D.端口号是16bit的地址码,端口号和IP地址构成一个插口(socket)。6.删除命名管道的系统调用是(A)。A.unlinkB.closeC.fcolseD.dup27.当打开vi编辑器编辑文件时,vi处于(A)模式。A.命令模式B.编辑模式C.实模式D.虚模式8.为了将当前目录下的归档文件myftp.tgz解压缩,可以使用(A)命令。A.tarxvzfmyftp.tgzB.tarxvfmyftp.tgzC.tarvzfmyftp.tgzD.tarjvzfmyftp.tgz9.cat命令可(C)。A.设置捕鼠器B.查看子目录内容C.查看文本文件内容D.查看二进制文件10.man命令可(D)。A.查看编译信息B.编译源程序C.查看用户信息D.查看帮助信息11.在Shell中Ctrl+D用于(A)。A.输入文件结束符B.撤销最近做的操作C.输出文件结束符D.输出文件名12.pwd命令可(B)。A.查看密码B.查看当前目录C.查看在线用户D.查看终端13.kill命令的功能是(C)。A.停止进程B.执行异步IOC.向进程发送信号D.查看帮助信息14.某shell程序运行时需向脚本传递参数,为得到参数的个数,可以使用(B)。A.$@B.$#C.$0D.$!15.在Linux中执行命令时,重定向IO的是(D)。A.命令B.参数C.标准输入D.Shell16.cp命令用于(A)。A.拷贝文件B.查询数据库C.网络连接D.执行命令17.默认情况下管理员创建了一个用户,就会在(B)目录下创建一个用户主目录。A./usrB./homeC./rootD./etc18.在vi编辑器里,命令dd用来删除当前的(A)。A.行B.变量C.字D.字符19.vi中哪条命令是不保存强制退出(C)。A.:wqB.:wq!C.:q!D.:quit20.Shell脚本中的注释用(C)标记。A.//B./*…*/C.#D.*21.用vi编辑并保存文件后,要退出vi编辑器时,可按Esc键切换到命令模式后,输入(A)。A.:qB.:aC.:bD.:c22.bind调用用于(A)。A.为socket分配地址B.客户端与服务器连接C.接收socket上的连接D.监听socket上的连接23.一个进程收到SIGCHILD信号,表示(C)。A.创建子进程成功B.创建子进程失败C.子进程结束D.子进程开始运行24.如果用户想对某一命令详细的了解,可用(C)命令。A.lsB.helpC.manDdir25.若要将鼠标从VM中释放出来,可按(A)键来实现。A.Ctrl+AltB.Ctrl+Alt+DelC.Ctrl+Alt+EnterD.Ctrl+Enter26.在UNIX/Linux系统添加新用户的命令是(D)。A.groupaddB.usermodC.userdelD.useradd27.删除文件命令为(D)。A.mkdirB.moveC.mvD.rm28.从后台启动进程,应在命令的结尾加上符号(A)。A.&B.@C.#D.$29.如果执行命令#chmod746file.txt,那么该文件的权限是(A)。A.rwxr--rw-B.rw-r--r--C.--xr—rwxD.rwxr--r—30.下列那一个指令可以设定使用者的密码(C)。A.pwdB.newpwdC.passwdD.password二、简答题(第1小题4分,第2小题6分,共10分)1.进程之间通信有哪几种方式,各用于何种情景?答:管道、共享内存、信号、消息、socket。进程通信根据交换信息量的多少分为高级通信和低级通信。低级通信一般只传送一个或几个字节的信息,以达到控制进程执行速度的作用(如pv操作);高级通信则要传送大量数据,目的不是为了控制进程的执行速度,而是为了交换信息。高级进程通信方式有很多种,大致可归并为三类:共享存储器、管道文件和消息传递。共享存储器:在内存种分配一片空间作为共享存储区。需要进行通信的进程把它附加到自己的地址空间中,不需要时则把它取消。管道文件:它是连接两个命令的一个打开文件。一个命令向该文件中写入数据,为写者;另一个命令从该文件中读出数据,为读者。消息传递:它以消息为单位在进程间进行数据交换。2.若在计算机硬件系统中增加一个字符设备,为让用户方便地使用该设备,从底层硬件到应用层用户接口,我们应该在哪些层次编写何种功能的软件?可能会碰到哪些问题?答:驱动程序,虚拟文件系统VFS,设备文件节点,应用层API驱动程序:驱动程序就是一组程序,一个比较特别的软件,它具有一般程序的一些特性,可以形象地把它理解为是搭建在计算机硬件设备与操作系统之间的桥梁,它的作用就是使操作系统能够正确地识别、管理、使用相应的硬件设备。虚拟文件系统VFS:向上,对应用层提供一个标准的文件操作接口;对下,对文件系统提供一个标准的接口,以便其他操作系统的文件系统可以方便的移植到Linux上;VFS内部则通过一系列高效的管理机制,比如inodecache,dentrycache以及文件系统的预读等技术,使得底层文件系统不需沉溺到复杂的内核操作,即可获得高性能;此外VFS把一些复杂的操作尽量抽象到VFS内部,使得底层文件系统实现更简单。设备文件节点:x中设备节点是通过“mknod”命令来创建的。一个设备节点其实就是一个文件,Linux中称为设备文件。有一点必要说明的是,在Linux中,所有的设备访问都是通过文件的方式,一般的数据文件程序普通文件,设备节点称为设备文件。应用层API:用户编程接口API遵循了UNIX中最流行的应用编程界面标准---POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口API,用于保证应用程序可以在源程序一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(LIBC)来实现的。三、程序设计题(每题3分,共30分)1.某工程包含源文件sub1.c,sub1.h,sub2.c,fun.h,fun.c,main.c,生成可执行文件doit,写一个makefile,要求:(1)执行make,可以最小编译代价得到可执行文件doit。(2)执行makeclean,清除可执行文件和全部目标文件。(3)若sub1.h修改,sub1.o需重新编译;若fun.h发生修改,fun.o需重新编译。(4)若main.o,sub1.o,sub2.o,fun.o发生修改,doit需重新生成。解:Makefiledoit:sub1.osub2.ofun.omain.ogcc-odoitsub1.osub2.ofun.omain.omain.o:main.cgcc–cmain.csub1.o:sub1.csub1.hgcc-csub1.csub2.o:sub2.cgcc-csub2.cfun.o:fun.cfun.hgcc–cfun.cclean:rm-rf*.odoit2.桌子上有一个盘子,最多只能装2个水果。爸爸只能向盘中每次放入一个水果,儿子每次从盘中取出一个水果。请编写两个C语言程序,模拟爸爸和儿子的动作过程。解:#includestdio.h#includestdlib.h#includetime.hvoidFather();//Father进程voidSon();//Son进程voidPrint();//向控制台输出信息intPlate_Size=0;//盘子中开始的苹果数intapple=0;//苹果数intFather_lag=0;//父亲是否处理等待状态,1时表示等待intSon_lag;//儿子是否处于等待状态,1时表示等待voidPrint(){printf(现在盘子里有%d个苹果\n,apple);if(Father_lag){printf(Father进程处于等待状态);}if(Son_lag){printf(Son进程处于等待状态);}if((Father_lag==0)&&(Son_flag==0))!=1){printf(\n);}}voidFather(){//Father进程apple++;Print();}voidSon(){//Son进程apple--;Print();}intmain(){inti;//1,表示Father进程操作,2时表示Son进程操作intPlate_Size;//水果数量while(1){i=rand()%2+1;//产生1,2随机数,其中1,表示Father()操作,2表示Son()进程操作switch(i){case1:if(Plate_Size==2){Father_lag=1;//Father()进程等待Print();}else{Father();if(Son_lag==1){Son_lag=0;//唤醒Son()可以拿苹果了Son();}}break;case2:if(Plate_Size==0){Son_lag=1;//Son()进程等待Print();}else{Son();if(Father_lag==1){Father_lag=0;//唤醒Father()可以放苹果了Father();}}break;}}}3.完成A、B两个进程所对应的C语言源程序。两进程共享一块结构体内存,结构体类型定义如下,A进程往该共享结构体内存中写入一帧视频数据,B进程从中读取。共享内存为空,A进程才可写入,共享内存中有数据,B进程才可读出。typedefstruct_Frame{intBufLen;//帧长度,intFrameType;//数据帧的类型unsignedcharFrameBuf[4096];//帧数据,每帧数据不超过4KB}FRAME;庄子云:“人生天地之间,若白驹过隙,忽然而已。”是呀,春秋置换,日月交替,这从指尖悄然划过的时光,没有一点声响,没有一刻停留,仿佛眨眼的功夫,半生已过。人活在世上,就像暂时寄宿于尘世,当生命的列车驶到终点,情愿也罢,不情愿也罢,微笑也罢,苦笑也罢,都不得不向生命挥手作别。我们无法挽住时光的脚步,无法改变人生的宿命。但我们可以拿起生活的画笔,把自己的人生涂抹成色彩靓丽的颜色。生命如此短暂,岂容随意挥霍!只有在该辛勤耕耘的时候播洒汗水,一程风雨后,人生的筐篓里才能装满硕果。就算是烟花划过天空,也要留下短暂的绚烂。只有让这仅有一次的生命丰盈充实,才不枉来尘世走一遭。雁过留声,人过留名,这一趟人生旅程,总该留下点儿什么!生活是柴米油盐的平淡,也是行色匆匆的奔波。一粥一饭来之不易,一丝一缕物力维艰。前行的路上,有风也有雨。有时候,风雨扑面而来,打在脸上,很疼,可是,我们不能向生活低头认输,咬牙抹去脸上的雨水,还有泪水,甩开脚步,接着向前。我们需要呈现最好的自己给世界,需要许诺最好的生活给家人。所以,
本文标题:期末试卷A含答案版
链接地址:https://www.777doc.com/doc-4951936 .html