《Linux编程(容易)》试卷
总分 得分 4. 下列变量名中有效的shell变量名是()。( ) A、-2-time B、_2$3 C、trust_no_1 D、 2004file
5. 当select()函数的返回值为1时,表示什么含义? ( )( )
题号 题分 得分 一 二 三 四 五
一、单选题(每题2分,共计40分)
A、表示当前已就绪文件描述符的数量为1;B.表示有错误信息,此时errno将被设置;C.表示等待超时,没
1. 从以下各选项中,选出用于阻塞等待客户端连接请求的函数。 ( )( ) A、listen() B、accept() C、connect() D、bind()
2. fork函数在父进程中的返回值是()。( ) A、创建的子进程标识号 B、0 C、-1 D、1
3. 下列哪个选项不能产生信号? ( )( ) A、read() B、alarm() C、kill() D、kill
有可读写的文件;D.以上选项都不正确
6. ()是操作系统中最重要最基本的概念之一它是系统分配资源的基本单位是一个具有功能的程序段
对某个数据集的一次执行活动。( ) A、程序 B、作业 C、进程 D、线程
7. 下列哪个函数可以获取pcb中未决信号集的信息?()( ) A、sigsupend() B、sigpending() C、sigprocmask() D、sigaction()
8. 下列哪个选项不是使用条件变量的必备步骤。 ( )( ) A、等待条件变量满足 B、唤醒阻塞进程
C、对要操作的资源进行加锁 D、释放条件变量
9. 对于整型信号量,在执行一次P操作时,信号量的值应。 ( )( ) A、不变 B、加1 C、减1 D、置0
10. ()命令是在vi编辑器中执行存盘退出。( )
D、递达状态
13. 要改变文件的拥有权,使用命令()。( ) A、chgrp B、chown C、chsh D、chmod
14. 为了达到使文件的所有者有读(r)和写(w)的许可,而其他用户只能进行只读访问,在设置文件的许可
值时,应当设为()。( ) A、566
A、:q
B、4
B、ZZ
C、655
C、:q!
D、744
D、 :WQ
15. 关于命令连接符“;”的说法中,正确的是?()( )
11. Linux操作系统自诞生至今,有数十万的程序开发人员参与到了它的开发与完善中,如今Linux已发
展成为是一个成熟、稳定的操作系统。从以下选项中选出关于Linux特点描述完全正确的一项。( ) A、多用户、多线程、单CPU B、单用户、单线程、多任务 C、多用户、多线程、多CPU D、单用户、多线程、多CPU
12. 下列哪个选项不是Linux系统中信号的状态。 ( )( ) A、阻塞状态 B、睡眠状态 C、未决状态
A、使用“;”运算符间隔的命令,会按照先后次序依次执行
B、使用“;”运算符间隔的命令,会将前一个命令的输出作为后一个命令的输入 C、使用“;”运算符间隔的命令,只有前一个命令执行成功后,后一个命令才会执行 D、使用“;”运算符间隔的命令,只有前一个命令执行失败后,后一个命令才会执行。 16. 下面哪个选项不是Linux服务器可提供的服务。( ) A、Web B、Xshell C、SFTP D、SSH
17. 下列选项中哪个函数可以修改文件描述符的属性? ( )( ) A、fcntl() B、socket() C、bind() D、read()
18. 在vi编辑器中的命令模式下,键入()可在光标当前所在行下添加一新行。( ) A、o B、i C、a D、A
19. VMware提供了桥接模式、仅主机模式和NAT模式这三种网络模式,以下哪个选项不是这些模式对
应的名称?()( ) A、VMnet0 B、VMnet8 C、VMnet1
得分 二、多选题(每题0分,共计0分) 得分 三、判断题(对的打“√”,错的打“×”;每题2分,共20分)
21. 当一次程序执行结束之后,进程随之消失,进程所用的资源被系统回收。( )
22. 调用fork()函数创建子进程时,若子进程创建成功,子进程的fork()返回子进程pid,父进程的fork()
返回0。( )
23. 阻塞指在调用函数时,若一时无法获取数据,将当前线程挂起,直到得到结果后才返回。( ) 24. pthread_exit()函数不通过返回值,而是通过其参数status获取线程的退出状态。( )
25. 在程序中调用kill()函数,若参数pid = -1,则发送信号sig给除1号进程与当前进程的所有进程。
( )
26. 若计算机中的两个进程需要使用同一台打印机,那么这两个进程间存在同步关系。( )
27. pthread库不是Linux系统默认的库,因此在使用pthread_create()函数创建线程时应链接静态库
libpthread.a。( )
28. 时序竞态是指因计算机中的突发事件导致的中断造成不恰当的执行顺序,从而导致的程序异常。( ) 29. 同步的目的是避免数据混乱,解决与时间有关的错误,实际上,不仅线程间需要同步,所有“
多个控制流共同操作一个共享资源”的情况,都需要同步。( ) 30. 即便是有亲缘关系,也不一定能使用匿名管道进行通信。( ) 得分 四、填空题(每题2分,共计20分)
D、VMnet9
31. 信号递达进程后才可能被处理,信号的处理方式有三种,分别为:_______、_______和_______。
20. 下列哪个函数可防止系统中出现僵尸线程?()( ) A、pthread_create() B、pthread_exit() C、pthread_cancel() D、pthread_detach()
32. _______命令可打印当前路径下所有文件的文件名。
33. VMware提供了_______、_______和_______这三种网络模式,这些模式对应的名称分别为
VMnet0、VMnet8和VMnet1。
34. TCP协议和UDP协议都使用_______区分同一台计算机中的不同进程,使用_______为不同计算机
中的进程建立连接。
35. Linux系统中用于实现线程的方法有三种,分别为:_______、_______和_______。 36. Linux系统中的1~31号信号称为_______,34~号信号称为_______。 37. Linux系统中每个进程都有一个唯一的非负整数作为其标识,它被称为_______。 38. Linux是一个基于命令行的操作系统,Linux命令中的选项分为_______和_______。
39. Linux操作系统因其强大的功能和良好的稳定性,逐渐被应用到了人类社会的诸多领域,目前,Linux
的应用领域主要包括:_______、_______和_______。
40. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为_______。 得分 五、简答题(每题5分,共计20分)
41. 在Linux下有一文件列表内容如下: lrwxrwxrwx l hawkeye users 6 jul 18 09:41
nurse2→nurse1 ,该列表内容的第一列内容lrwxrwxrwx中的l是什么含义?对于其它类型的文件或目录还可能出现什么字符,它们分别表示什么含义?
42. 使用fork()函数创建一个子进程,在子进程中使用kill()发送信号,杀死父进程。
43. 简述GCC编译器的工作流程,并说明每步执行的内容。
44. shell变量都有哪些?
答案
一、单选题(每题2分,共计40分) 1. B 2. A 3. A 4. C 5. A 6. C 7. B 8. D 9. C 10. B 11. C 12. B 13. B 14. B 15. A 16. A 17. A 18. A 19. D 20. D
二、多选题(每题0分,共计0分) 三、判断题(每题2分,共计20分) 21. 对 22. 错 23. 对 24. 对 25. 对 26. 错 27. 对 28. 对 29. 对 30. 错
四、填空题(每题2分,共计20分) 31. 【忽略】 【捕捉】 【执行默认动作】 32. 【ls -a】
33. 【桥接模式】 【仅主机模式】 【NAT模式】 34. 【端口号】 【端点】
35. 【互斥锁】 【条件变量】 【信号量】 36. 【常规信号】 【实时信号】 37. 【进程标识符】 38. 【长选项】 【短选项】
39. 【服务器领域】 【桌面应用领域】 【嵌入式应用领域】 40. 【文件系统】
五、简答题(每题5分,共计20分)
41. L表示该文件是符号链接文件。-表示该文件是普通文件,D表示该文件是目录,B表示该文件是块设
备文件,C表示该文件是字符设备文件。
42. #INCLUDE <STDIO.H> #INCLUDE <STDLIB.H> #INCLUDE <UNISTD.H> #INCLUDE
<SIGNAL.H> INT MAIN() { PID_T PID; PID = FORK(); IF (PID == 0){ //子进程 SLEEP(1);
PRINTF("CHILD
PID=%D,PPID=%D\\N",
GETPID(),
GETPPID());
KILL(GETPPID(), SIGKILL);//发送信号SIGKILL给父进程 } ELSE IF (PID > 0){ //父进程 WHILE (1){ PRINTF("PARENT PID=%D,PPID=%D\\N", GETPID(), GETPPID()); } } RETURN 0; }
43. GCC的编译过程分为四个步骤,分别是预处理、编译、汇编和链接。预处理阶段主要处理源代码中以
&LDQUO;#&RDQUO;开头的预编译指令和一些注释信息;编译阶段GCC会对经过预处理的文件进行语法、词法和语义分析,确定代码实际要做的工作,若检查无误,则生成相应的汇编代码文件;汇编阶段将编译后生成的汇编代码转换为机器可以执行的命令;链接的过程是组装各个目标文件的过程,在这个过程中会解决符号依赖和库依赖关系,最终生成可执行文件。
44. 在SHELL编程中可以使用四种变量:用户自定义变量、环境变量、位置变量和特殊变量。