Linux操作系统 考试题库_第1页
Linux操作系统 考试题库_第2页
Linux操作系统 考试题库_第3页
Linux操作系统 考试题库_第4页
Linux操作系统 考试题库_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.在Linux目录结构中目录中的文件是普通用户可以使用的可使用的可执行文件的目录是(B)19

A./sbinB./binC./usrD./lib

2.在Linux目录结构中Linux的内核与引导程序所需要的文件位于(B)目录

A/binB./bootC./rootD./proc

3.在Linux目录结构中用来存放系统配置文件(D)目录

A./libB./devC./procD./etc

4.Linux三种特殊权限中仅用于目录文件的权限是(C)22

A.SUIDB.SGIDC.黏滞位D.都可以

5.Linux三种权限中允许进入目录的权限(C)22

A.r-可读B.w-可写C.x-可执行D.都不是

6.下列脚本文件最先自动执行的是(A)24

A./etc/rc.localB./etc/profileC.~/.bashrcD.~.bash_logout

7.下面通配符可匹配多个任意字符的通配符是(A)29

8.ABC.[abcdD.[!a-e]

A.输出重定向符号右边的文件已经存在,不会覆盖文件而是追加的定向符是(B)

9BC.2D.&>

10.表示用户家目录的是(B)

io.A./hom.(所有用户家目录的父目录,+用户名才是用户家目录…B…

IL可删除非空目录与其子目录的命令是(B)

12.A.toucB.r.-C.mkdi...D.rmdir空目录

13.是强引用的符号(A)

I4.A.单引…….B.反引…….C.双引……D.中括号

15.可显示隐藏文件的1s命令形式选项是(A)

13.A.1.-.B.1...0.1...1.-1

14.可通过接受标准输入作为输出内容来创建简单文件的命令是(B)42

14.touc..B.ca..C.v...D.gedit

6不带有编辑功能但有翻页、按行滚动、搜索功能的命令是(B)43

A.catB.more和lessC.head和tailDvi

I5.wc命令可统计文件的行数、字数和字节数。在下列格式中只显示文件的字数的是(C)51

16.w..B.w.-..C.w.-…w.-1

17.可实现文件重命名的命令是(B)52

c..B.m..C.1...rename

17.在Linux系统中可通过挂载将光盘、U盘或一个文件系统连接到主目录树的一个目录节点。

期中光盘或光盘镜像对应的文件系统类型是(C)44

is.vfa.B.ext…C.iso966….vboxsf

19.下面更改文件命令只能更改符号连接的目标文件的权限的命令是(C)

I9.chow.B.chgr..C.chmo..D.以上都不对

chmod命令的权限模式可使用字符串形式或八进制形式,当使用八进制形式时模式应由三或

四位八进制构成,其中从最高到最低位依次表示为(A)每个八进制的三个二进制位从高到低

分别表示为有无读、写、执行权限

A.文件所有.文件所属..其他用..B.其他用.文件所属.文件所有者

C.文件所属组文件所有者其他用户D.其他用户文件所有者文件所属组

chmod命令的权限模式可使用字符串形式或八进制形式,当使用八进制形式时模式应由三或

四位八进制构成,其中每个八进制的三个二进制位从高到低分别表示为有无(A)

A.读写执行B.写读执行C.执行读写D.执行写读

21.运行时不会创建子进程的方式是(C)69

赋予shell程序文件可执行权限,直接运行shell程序(外部命令)

B.调用命令解释器解释执行shell程.(Shell函数)

C.使用source命令执行shell程序(内部命令)

口.用()将多条命令括起来而形成的复合命令执行

对于使用(C)连接的两条命令,只有当左边的命令执行失败(退出状态为非。值)才会继续

执行右边的命令。

22.A.;B.&..C.|...D.都不是

23she11执行命令在同名时优先级别最高的是(A)

24.A.别…B.函…C.内部命...D.外部命令

25.将一个变量stab的值清除(即成为空串)的命令是(D)

A.$stabB.${#stab}C.${stab}Dunsetstab

Shell变量不需要预先定义,若对其进行数值操作,可指定变量的属性为整数,具体命令为D

26A.declar.变量.R.declar.-.变量一C.typese.变量.D.typese.-.变量名

27.Shell中可表示引用数组abrr中的所有非空元素的引用是(B)76

28.A.${abrr..B.${abr.[*]...C.${#abrr[*..D.${#abrr[@]}

在Shell变量引用操作符可实现字符串替换其中(C)用来测试如果变量stra存在且不为空,

则返回为word,否则返回为空串78

29.A.${stra:-wor...B.${stra:=worC.${stra.+wor...D.${stra.?wor.}

在Shell变量引用操作符可实现字符串替换其中(D)用来测试,如果变量stra存在,则返回

为变量stra的值,否则输出为word,并退出当前脚本程序

A.${stra-wor...B.${stra=worC.${stra.+wor...D.${stra.?wor.}

在Shell变量引用操作符可实现模式匹配替换其中(B)用来的含义是若pattern匹配变量

stra的头部,则删除最长匹配部分并返回剩余部分。

3O.A.${str.#pattern...B.${stra##patterC.${stra%pattern.D.$Jstra%%pattern}

为了使子进程能继承父进程中定义的变量,就必须使(D)命令将这些变量送入进程转出区

83

3i,A.rea..B.se..C.shif..D.export

使用(D)形式时,即使表达式中有Shell的特殊字符时,也不必用双引号将其括起来。87

32.A.tes.表达…B..表达…・C.le.算术表达..D.((算术表达式))

33.使用(D)形式时可以返回算术表达式的确切值

34.A.tes.表达…B.le.算术表达・・C.((算术表达.).D.$((算术表达式))

A.gcc可以对编译阶段进行控制,其中(B)选项规定编译到汇编语言,不进行其他操作。107

B.-EB.-SC.-cD.-o

gcc可以对编译阶段进行控制,其中(A)选项设定库文件的路径

A.A.-.pat..B.-.pat..C.-.librar..D.-static

B.gcc可以对编译阶段进行控制,其中(D)选项在可执行文件中包含标准调试信息,供gdb

进行调试。

35.-Wal..B.-Werro..C.-..D.-g

36.在Linux底层文件访问中的大多数操作都是围绕文件描述符来展开的其中(A)函数是内

核向进程返回一个文件描述符为以后使用148

37.A.open(..B.read(..C.write(.D.closeQ

38.最终文件权限取决于(D)

39.A.mod...B.unmas..C.mode&unmas.D.mode&~unmas.mP掩码

4O.Lseek()中第三个参数的值为。表示(A)

4I.A.文件开始位・.B.文件读写指针当前位..C.文件结束位..D.都不是

文件属性读取函数中,依据文件名且当文件是一个符号链接时返回是链接所指向文件的信息

的函数是(A)152

42.A.sta...B.lsta..C.fsta..D.都不是

43.利用文件属性读取函数获取的st_mode进行文件类型测试方法正确的是D

对成员st_mode同文件类型掩码进行与运…….B.对成员st_mode直接判断

44.C.利用带成员sjmode参数宏(用于文件类型判断)定・.D.A和C都可以

45.下列函数中可关闭文件的函数(A)

46.A.close(..B.dup2(..C.A和B都可・.D.dup()

47.下列底层文件访问函数中第一个参数是文件描述符的是(C)157

48.A.chmo..B.lchow.C.fchow..D.chown

49.硬链接是(B)162

指向目标文件的指•.B指向文件的索引节点

50.C.可跨越不同文件系统创.D.可通过symlink。来创建

51.读取链接readlink和删除链接unlink操作对象是(C)163

都只对硬链接有•.B.都对软链接无效

读取只对软链接有效,删除都两种都有效D.读取对两种都有效,删除只对软链接有效。

52.目录文件的读取函数readdir()参数和返回值的含义0C167

A.参数和返回值都指向目录文件B.参数和返回值都指向目录项

53.C.参数指向目录文件,返回值指向目录项D.返回值指向目录文件,参数指向目录项

54.对磁盘文件的标准I/O操作一般是实现(A)171

A.全缓冲B.行缓冲C.不带缓冲D.都可以

当标准输入和标准输出涉与交互作用设备时,它们是(B)

A.全缓冲B.行缓冲C.不带缓冲D.都可以

55.标准错误输出是(C)

A.全缓冲B.行缓冲C.不带缓冲D.都可以

56.在函数fopen()中文件打开模式中耍求文件必须存在的模式是(A)172

A.r和r+B.w和w+C.a和a+D.ab和wb

57.在函数fopen()中文件打开模式中不是可读写的方式打开文件模式是(D)

A.r+B.w+C.a+D.r

在打开函数中其中是在由指定的流上打开由路径名指定的文件,其返回值为指向文件流指针,

此函数用于将一个指定的文件打开为一个预定义的标准流(C)

A.openB.fopenC.freopenD.fdopen

以下函数中表示从某流中读取一个字符但该函数不带参数,表示从标准输入流中读字符的函

数是(C)174

A.getsB.getcC.getcharD.fgec

当到达文件尾端或出错时,字符读取函数的返回值都是EOF,为进一步确认文件是否已到文

件尾,应当通过(B)函数来判断。

A.ferrorB.feofC.cleanerrD.perror

在定位函数中,可直接将流的读写指针设置到文件的起始位置同时会将错误指示器ermo清

零的函数是0rewind182无答案

A.ferrorB.feofC.clearerr174D.perror

58.下面关于ftell()函数成功调用说法不正确的是(C)

A.会清除流结束标志B.返回读写指针当前相对文件起始位置的位移量

C.返回读写指针当前相对文件结束位置的位移量D.会撤销已调用ungetc()对流的影响

59.格式化输出可把格式化数据输出到标准输出、指定文件与字符缓冲区。其中()函数是将

格式化数据输出到指定大小的字符缓冲区。(D)183

A.printfB.fprintfC.sprintfD.snprintf

60.格式化输入可从标准输入、指定文件与字符缓冲区读取格式化数据。其中。函数是输出

到指定文件。(B)

A.printfB.fprintfC.sprintfD.snprintf

61.关于临时文件不正确的是A186

A.可通过tmpnam()创建B.也可通过tmpfile()创建

C.程序结束时或关闭文件时自动删除D.调用tmpname次数有限制

62.下列是进程的异常终止的是(D)193

A.从main中调用return返回B.调用exitC.调用_exitD.调用abort

60.不属于非格式化标准I/O的是(C)

61A字符I/..B.行I/..C.列I/..D.块I/O

62.关于exit。函数不正确的是(B)194

A.先清理后进入内核B底层系统调用

C.有一个整型参数D.用于正常终止一个进程

62.内核使程序执行的方法的是(A)

63.A.调用exec函..B.调用exit/_exi..C.从main返..D.收到一个系统终止信号

64.关于atexit函数正确的是(D)

A.一个进程可登记超过32个函数B.函数登记的顺序和调用顺序相同

同一函数可登记多次,但调用一次

D.在显示或隐式调用exit时则执行这些登记的终止处理程序

65.非初始化数据段由exec赋初值常称为(C)196

A.正文段B.数据段C.bss段D.堆

65.在存储空间布局中从低地址到高地址依次分布为A

A.正文段f数据段fbss段一堆一栈B.栈一堆一bss段一数据段f正文段

C.正文段->堆->栈->数据段->bss段D.堆f正文段-数据段->bss段一栈

66.PID为0的交换进程是(A)200

A.其他所有进程的祖先进程B.所有其他用户进程的祖先进程

C.其他所有内核线程的父进程D.普通进程

67.调用exec可能有变化的是(D)204

A.调用前后进程IDB.调用exec前后实际用户ID

C.调用exec前后实际组IDD.调用exec前后有效用户ID和有效组ID

68当waitpid函数的pid参数设置为(A)表示等待任一子进程终止。211

A.pid==-1B.pid==0C.pid>0D.pid<-1

69.fork函数在父进程中的返回值是(B)206

A.OB.创建的子进程的进程标识号C.-lD.1

70.fork函数在子进程中的返回值是(A)

A.OB.创建的子进程的进程标识号C.-lD.1

进程可以忽略大部分信号,但下列信号中(D)不能忽略213

A.SIGBORTB.SIGILLC.SIGQUITD.SIGKILL

71.调用exec函数会将原来设置为要捕获的信号都更改为(A)214

A.默.B忽..C.另一捕..D.默认或忽略

72.可用于在不同主机的进程间通信的技术是(D)225

73.A.管..B.共享内..C.消息队..D.套接字

74.只能在同源进程间通信的技术(A)224

75.A.普通管..B.命名管..C.消息队..D.共享内存

76.不属于SystemVIPC通信技术的是(A)

77.A.管..B.消息队..C.信号..D.共享内存

78.建立从父进程到子进程的管道的方法(B)225

父进程关闭管道的写端,子进程关闭管道读端

B.父进程关闭管道的读端,子进程关闭管道的写端

C.父子进程都管道的读端D.父子进程都关闭管道的写端

76.获取某个环境变量值使用函数A

A.getenvB.putenvC.setenvD.unsetenv

77.文件系统保存在磁盘的B

A.引导块B.超级块C.i节点块D.数据块

78.Linux文件系统的根目录的i节点号为C

A..B...C..D.3

79.文件描述符的数据类型是B

A.cha.B.in.C.doubl.D.float

80.设置文件偏移量的系统调用是C

A.truncateB.sync..IseekD.create

81.下面那个不是Iseek第三个参数的取值C

A.SEEKSETB.SEEKCURC.SEEKNOWD.SEEKEND

82.可以使用(C)系统调用获得符号链接所引用文件名称

A.linkB.symlinkC.readlinkD.softlink

83.获得工作路径名称的系统调用是A

A.getcwdB.getpwuidC.getgrgidD.getlogin

84.通过文件属性中的uid获得文件拥有者名字的系统调用是B

A.getcwdB.getpwuidC.getgrgidD.getlogin

85.通过文件属性中的gid获得文件所属组名字的系统调用是C

A.getcwdB.getpwuidC.getgrgidD.getlogin

86.根据文件路径来改变文件权限使用系统调用是B

A.chownB.chmodC.fchmodD.fchown

一、填空题

1.Linux内核与发行版的关系:LinuxKernel3.5.3是Linux内核版,而Ubuntu12.04.1

是Linux的发行版

2.Shell是linux系统的一种命令行用户界面,提供了用户与操作系统进行交互的接口,本质

上是命令解释器,可为用户提供个性化的使用环境。

3.在Shell中测试运算有文件属性测试、字符串测试、数值测试、逻辑运算。

4.专门执行整数算术运算的命令let所指表达式可执行C语言中常见的算术、逻辑、位运算、

比较运算等.

5.Vi的三中工作模式:插入模式、命令模式、末行模式。

6.Gcc生成可执行文件的四个步骤:预处理、编译、汇编、链接。预处理是对源程序进行头

文件加载和宏展开等操作,由epp完成;汇编一是产生汇编代码,二是产生二进制的目标文

件,由gcc使用as;生成的多.。文件和使用到的库文件链接成为可被操作系统执行的可执行

程序,使用Id工具,可使用两类库文件。

7.库分为静态库和共享库。静态库由多个.。文件组成的集合,文件成员没有特殊的存

在格式,使用“ar”可维护和管理,库文件后缀为“.a”;共享库多个.o文件由编译器按照一

定特殊的方式生成。多个可执行程序可共享库文件的代码段,但不共享数据。

8.命令行参数是main。函数的参数y

Main函数的参数若有两个参数则第一个参数代表命令行参数个数、第二个参数代表指向各命

令行参数字符串的指针数组。

9.Linux中日期时间的表示方法有:算术类型、结构体类型、字符串类型。

10.如果一个C程序的入口表示为main(intargc,char*argv[]),编译该程序后的可执

行程序为a.out,那么在命令w./a.out-ffoo”后,main中的参数argv[l]指向的字符串是

(5)。

11.Linux系统下表示标准输入、标准输出和标准错误输出的文件描述符(符号表示)分别

为(STDIN_FILENO>STDOUT.FILENO、STDERR.FILENO),它们的值分别为0、

1.2O

12.数字635表示的权限使用字母的方式表示为(rw—wxr-x)、使用符号方式表示为

(SJRUSR|S」WUSR|S」WGRP|S」XGRP|S」ROTH|S」XOTH)。

13.系统调用。pen的功能是打开或创建文件。

14.使用open打开文件时有三个标志必须要选择其一,这三个标志是O_RDONLY、

O_WRONLY>O.RDWRo

15.文件偏移量代表下一次读或写的位置。

16.将文件偏移量市值为当前偏移处之前的4个字节的维护使用Iseek(fd,(-4),

(SEEK_CUR))O

17.设置打开文件标志(O_TRUNC),可以截断文件为0,使用系统调用(truncate)可以

截断文件或者加长文件。

18.如果umask设置为022,则创建一个新文件夹(数字表示)的权限为(644)、创建一

个新目录的权限为(755)。

19.如果umask设置为024,则创建一个新文件夹(数字表示)的权限为(642)、创建一

个新目录的权限为(753)。

20.使用系统调用(umask)可以设置和得到文件模式的屏蔽字。

21.创建硬链接使用系统调用(link),创建符号链接使用系统调用(symlink)。

22.获得工作路径名称的系统调用是(getcwd)。

23.可以使用(stat或fstat或Istat)系统调用显示文件属性信息。

24.chmod,chown,utime都可以修改文件i节点信息,其中chmod的功能是(更改文件

权限)、chown的功能是(更改文件所有者和所属组)、utime的功能是(更改文件访问时间

和修改时间)。

25.若实现将标准输出重定向到文件描述符为6对应的文件上,则应使用语句(dup2(6,l))。

26.系统调用(Unlink)的作用是删除目录项,这里的目录项是指(文件名和文件i节点的

对应关系)。

27.打开目录使用(DIR*opendir(constchar*name))系统调用,关闭目录使用(int

closedir(DIR*dir))系统调用,读取目录内容使用(structdirent*readdir(DIR*dir))系

统调用。

28.chdir系统调用的功能是(改变当前目录)。

29.创建目录使用(intmkdirfconstchar*pathname,mode_tmode))系统调用、册1J除

目录使用(intmidir(constchar"pathname))系统调用。

30.popen函数实现的操作:创建一个管道,fork一个子进程,然后关闭管道的不使用端,在

子进程中exexc一个shell以执行一条命令,然后等到命令的终止。

31.使用kill发送信号时,发送方进程应具有相应的权限:

接受和发送进程的所有者相同,发送进程的所有者是超级用户

三、简答题

1.系统调用、库函数的区别和练习

从用户角度观察,系统调用和库函数都以C函数形式出现,提供给用户一种功能实现的接口,

需要用户输入指定的参数,调用结束得到指定的返回值。

从实现者角度观察,库函数是在系统调用上层的函数,库函数一般指程序员可以使用的通用

函数。

系统调用由两部分组成:

(1)核心函数:是实现系统调用功能的代码,作为操作系统的核心驻留在内存中,是一种共

享代码。运行在核心态。

(2)接口函数:是提供给应用程序的API,以库函数的形式存在于Linux的lib.a中,该库

中存放了所有系统调用的接口函数的目标代码,用汇编语言书写。其主要功能是把系统调用

号,入口参数地址传给相应的核心函数,并使用户态下运行的应用程序陷入核心态。

4.完成如下命令

(1)新建用户tom和用户组student

#useraddtom

#passwdtom

#groupaddstudent

(2)新建文件file

#touchfile

(3)将文件file改名为test,然后将test拷贝到/home

#mv

#cptest/home

(4)将/home/test文件的拥有着修改为tom,将文件所属组该为student

#chowntom:student/home/test

5.静态库和共享库的区别

(1)静态库的代码在编译时就已连接到开发人员开发的应用程序中。

(2)共享库只是在程序开始运行时才载入,在编译时,只是简单地指定需要使用的库函数。

(3)静态库文件以.a结尾,共享库文件以.s。结尾。

6.Linux文件类型主要有哪七类?

常规文件、目录文件、字符设备文件、块设备文件、管道文件、链接文件、套接字文件

7.简述文件、i节点、文件名、目录之间的关系

每个存在磁盘上的文件都由i节点和数据块两部分组成,i节点和文件一一对应,一个i节点可

以对应多个文件名,文件名和i节点的对应关系叫做文件的硬链接,文件名和i节点的对应关

系保存在目录文件中。

8.什么是文件描述符?

(1)一个非负整数,内核以此来标识一个特定进程正在操作的文件。

(2)012代表三个标准的文件描述符,分别为标准输入、标准输出、标准错误输出

9.使用符号方式表示rwxrwxrwx权限

S」RUSR|S」WUSR|S」XUSR|SJRGRP|S」WGRP|SJXGRP|SJROTH|

S」WOTH|S」XOTH

10.写出。pen一下6种打开标志:只读、只写、读写、追加、文件不存在创建、截断为

0

O-RDONLYO_WRONLYO_RDWRCLAPPENDO.CREATO.TRUNC

11.读程序,写出执行结果并解释得到该结果的原因

main()

{

intfdl,fd2;

fdl=open("/etc/passwd",O_RDONLY);

fd2=open("/etc/passwd",O_RDWR);

printf("fdl=%d,fd2=%d\n”,fdl,fd2);

close(fdl);

close(fd2);

)

结果:fdl=3fd2=4

原因:open返回的文件描述符为最小可用的非负整数:012是三个标准的文件描述符默认已

经被占用,所以第一个open的返回值为3,第二个open返回的是4。

12.回答stat、fstat、latat三个系统调用的区别

stat根据路径获得文件元数据信息

fstat根据文件描述符获得文件元数据信息

前两者如果遇到符号链接文件则会一直引用至非符号链接文件

Istat获得符号链接文件本身的文件元数据信息

12.dup和dup2的区另ij和联系

联系:dup与dup2都用来将新文件描述符指向原来文件描述符指向的打开文件描述。

区别:dup返回的新文件描述符为最小可用的文件描述符,dup2返回的新文件描述符可以通

过第二个参数指定。

13.硬链接和符号链接的区别

(1)命令

In原文件硬链接文件(不能对目录创建硬链接)

In-s原文件/目录符号链接文件

(2)是否新增文件:硬链接不增文件,符号链接增加文件。

(3)删除原文件/目录

硬链接:对应i节点链接数

符号链接:符号链接文件失效,

(4)删除链接文件

删除硬链接文件,使对应i节点的链接数-1。

删除符号链接文件,对原文件/目录无任何影响

(5)是否跨文件系统:硬链接不可以,符号链接可以

14.fork与vfork区别?

(1)fork创建的子进程复制父进程的整个地址空间,vfork不创建这一副本,子进程借用父

进程的地址空间,直到其调用exec族函数或终止;

(2)fork创建的子进程和父进程相互独立地运行,而vfork创建子进程后挂起父进程,直到

子进程终止或调用exec族函数。

使用kill发送信号时,发送方进程应具有相应的权限:

接受和发送进程的所有者相同,发送进程的所有者是超级用户。

15.阅读以下代码,若execlp调用成功的话,“Done!”会打印输出吗?为什么?

#include<stdio.h>

intmain()

printf(uRunningpswithexeclp\n,,);

execlp(“ps”ps“,“,0);

printf("Done!\n");

exit(0);

)

不会输出“Done!”。

原因:

执行execlp(“ps",“ps"-af”,0)调用成功后,当前进程的地址空间被新的程序ps所替

代,将执行“ps-af”

16.试写出下列程序段的运行结果,并解释原因

intx=0,inty=0;

voidthread1(void)

{

printff“Thisispthreadl.thesentencel\nw);

y=7;

sleep(l);

printff“Thisispthreadl.thesentence2\n");

x=x+y;

voidthread2(void)

printff“Thisispthreadl.thesentencel\nw);

x=4;

sleep(l);

printf("Thisispthreadl.thesentencel\n");

y=8+y;

)

voidmain(void)

{

pthread_tidl,id2;

pthread_create(&id1,NULL,(void*)thread1,NULL);

pthread_create(&id2,NULL,(void*)thread2,NULL);

pthreadjoinfid1,NULL);

pthread_join(id2,NULL);

printf(wx=%d,y=%d\nn,x,y);

}

答案:

Thisispthreadl.thesentense1

Thisispthread2.thesentense1

Thisispthreadl.thesentense2

Thisispthread2.thesentense2

x=11,y=15

原因:

(1)线程1先运行,线程2后运行。

线程1执行sleep⑴;后阻塞,线程2继续执行,线程2执行到sleep⑴;时线程2阻塞,线程

1阻塞结束继续执行,线程1执行结束后线程继续执行到结束。

(2)线程1和线程2共享进程的数据段,因此共享变量x,y0

17.进程间通信的六种方式是什么?简述他们的通信原理?

(1)信号:用于通知接收进程有某种事件发生。

(2)管道:连接一个进程的输出至另一个进程的输入的一种方法。

(3)信号量:一个计数器,用来记录对某个资源的使用情况。

(4)共享内存:允许多个进程访问同一块内存空间。

(5)消息队列:消息的链表,链表中每个节点包括消息类型和正文两部分。

(6)套接字:在网络上主机间进程进行通信的方式。

18.PIPE与FIFO的区别与联系

PIPE为未命名管道,FIFO为命名管道。

联系:PIPE和FIFO都是单向传输,一端为读,另一端为写。

区别:PIPE只能在有亲缘关系的进程中使用,如父子进程;

FIFO有名字,所以只要知道该名字,无关进程之间也可以使用。

19.书名产生信号的几种方式?

(1)用户操作。如键盘操作Ctrl-C,最终使得内核产生信号SIGINT。

(2)进程执行出错。如浮点数溢出,内核也会产生信号。

(3)进程执行某个系统调用。如调用kill向某个进程或进程组发送信号。

20.说明信号传递的过程。

(1)生成(generating)o内核要更新目标进程的数据结构,表示一个新的信号已经被发送

给此进程。此时,进程并没有对信号做出任何响应。

(2)传递(delivery)o强迫目标进程对信号做出响应。

四、编程题

1.向文件门中写入“helloworld!”,然后再将fl中的内容读出并显示在屏幕上。(注意

必要的错误判断)

#include<unistd.h>

#include<sys/stat.h>

#include<sys/fcntl.h>

intmain()

{

intfd;

charbufl[13]={"helloworld!"};

charbuf2[12];

intnum;

fd=open("flH,O_RDWR|O_CREAT|O_TRUNC,0644);

if(fd==-l)

(

perror("f1notopen");

exit(l);

)

num=write(fd,buf1,sizeof(buf1)-1);

if(num!=(sizeof(bufl)-l))

printf("writelessthanwant\n");

lseek(fd,O,SEEK_SET);

num=read(fd,buf2,12);

if(num!=12)

printf("readlessthan12\n");

write(l,buf2,12);

close(fd);

}

2.向文件f2中写入“aabbccddee”,然后将偏移量移到绝对值偏移为4的位置处,读6个

字符,并将结果显示在屏幕上

#include<unistd.h>

#include<sys/stat.h>

#include<sys/fcntl.h>

intmain()

{

intfd;

charbufl[l1]={"aabbccddeen);

charbuf2[10];

intnum;

fd=open("f2u,O_RDWR|O_CREAT|O.TRUNC,0644);

if(fd==-l)

{

perror("f2notopen");

exit(l);

num=write(fd,buf1,sizeof(buf1)-1);

if(num!=(sizeof(bufl)-l))

printff'writelessthanwant\n");

lseek(fd,4,SEEK_SET);

num=read(fd,buf2,6);

if(num!=6)

printf(nreadlessthan6\n");

write(l,buf2,6);

close(fd);

3.向文件f3中写入“aabbccddeeffgghh”,然后将文件截短后的文件内容读出并显示在屏

幕上

#include<unistd.h>

#include<sys/stat.h>

#include<sys/fcntl.h>

intmain()

intfd;

charbuf1[17]={"aabbccddeeffgghh,,};

charbuf2[8];

intnum;

fd=open(,,f3H,O_RDWR|O_CREAT|O_TRUNC,0644);

if(fd==-l)

perror("f3notopen");

exit(l);

}

num=write(fd,bufl,sizeof(buf1)-1);

if(num!=(sizeof(bufl)-l))

printff'writelessthanwant\n");

lseek(fd,O,SEEK_SET);

ftruncate(fd,8);

num=read(fd,buf2,8);

if(num!=8)

printf(nreadlessthan8\n");

write(l,buf2,8);

close(fd);

}

4.实现“cat文件名”显示文件内容

#include<fcntl.h>

main(intargc,char*argv[])

{

intfd;

intnum;

charbuf[10];

if(argc!=2)

printff'miss\n");

exit(l);

}

fd=open(argv[l],O_RDONLY);

if(fd==-l)

(

perror("erroropen");

exit(l);

)

while((num=read(fd,buf,10))!=0)

writef1,buf,num);

close(fd);

}

5.实现“cp原文件目标文件”

#include<sys/stat.h>

#include<fcntl.h>

main(intargc,char*argv[])

{

intfrom,to;

intnum;

charbuf[10];

if(argc!=3)

printf("argumenterror\n");

exit(l);

}

from=open(argv[1],O_RDONLY);

to=open(argv[2],0_WRONLY|O_CREAT|O_TRUNC,0644);

num=read(from,buf,10);

while(num!=O)

{

write(to,buf,num);

num=read(from,buf,10);

}

close(from);

close(to);

}

6.编写程序pro3.c,将字符串“helloworld”通过输出重定向方式写入文件fl中

#include<stdio.h>

#include<unistd.h>

#include<fcntl.h>

#include<sys/stat.h>

#include<sys/types.h>

main()

intfd;

if((fd=open("fl,,,O_WRONLY|O_CREAT,0644))==-l)

perrorf'openfail");

if(dup2(fd,1)==~1)

perror(nRedirectfailed");

printf("Helloworld\n");

close(fd);

)

7.使用fork创建进程,在子进程中打印“Iamthechild”和子进程pid,在父进程中打印

“Iamthefather”和父进程pid

#include<sys/types.h>

#include<stdlib.h>

#include<stdio.h>

intmain()

{

pid_tpid;

pid=fork();

if(pid<0)

{

perror("fork");

exit(l);

elseif(pid==0)

printf("Iamthechild\n");

else

printf("Iamthefather\n");

exit(0);

}

8.创建子进程,在子进程中执行“ps-A”命令,父进程等待子进程结束后打印“childover"

与所处理的子进程进程号

#include<sys/types.h>

#include<stdlib.h>

main()

/

I

pid_tpid,cpid;

inti;

char*args[64];

args[O]=,,ps”;

args[l]="-A”;

args[2]=NULL;

pid=fork();

if(pid<0)

perror(“fork");

exit(l);

elseif(pid==O)

{

execvp(args[0],args);

exit(0);

}

else

{

cpid=wait(NULL);

printff"childover!cpid=%d\n,,,cpid);

9.编写程序处理SIGINT信号,当程序接收到SIGINT信号后输出“SIGINTiscaught”

#include<stdio.h>

#include<signal.h>

voidsignal_handler(intsignum)

switch(signum)

caseSIGINT:

printfC'SIGINTiscaught!\n");

break;

intmain()

{

signal(SIGINT,signal_handler);

pause();

return0;

)

10.使用PIPE时限父子进程向子进程发送1234567890,子进程接收并显示

#include<sys/types.h>

#include<stdio.h>

main()

{

intpfd⑵;

charbuf[32];

pid_tpid;

pipe(pfd);

if((pid=fork())<0)

perror("fork");

elseif(pid>0)

close(pfd[0]);

write(pfd[l],nl234567890",11);

else

{

close(pfd[l]);

read(pfd[0],buf,11);

printf("childread:%s\n",buf);

一、单项选择题

l.Linux操作系统内核创始人是(C)

A.BillGatesB.RichardStallman

C.LinusTorvaldsD.DennisM.Ritchie

2.以下哪种不是Linux的Shell类型(C)

A.bashB.kshC.rshD.csh

3.下面关于Shell的说法,不正确的是(B)o

A.一种命令语言解释器B、一种和C类似的程序语言

C.操作系统的外壳D、用户与Linux内核之间的接口程序

4.hda3表示(B)o

A.IDE0接口上的从盘B、IDE0接口上主盘的第三个分区

C.IDEO接口上的第三个主分区D、IDE。接口上的第三个逻辑分区

5.一般情况下,Swap的大小建议是(C)。

A.50MB、100MC、内存大小的2倍D、150M

6.Linux下的cd命令可以改变用户的当前目录,当用户键入cd并按回车后,(A)。

A.当前目录改为用户主目录B、当前目录改为根目录

C.当前目录没有变D、当前用户改为上一级目录

7、在字符界面下启动X-Window的命令是(B)

A.startB.startxC.beginD.beginx

二、填空题(将正确答案填在每小题的空格内。本题共4。空,每空1分,共4。分)

1、安装Linux时经常建议初学者将磁盘分两个分区,分别是根分区和SWAP交换分区。

2.Linux的内核版本分为一稳定版—和开发版,其版本号通常由3个数字组成,并表示为X、Y、

Z的形式,X代表—主版本号-Y代表一次版本号-Z代表一末版本号一。其中,Y如果是偶数,

则代表这个内核版本是一稳定版可以公开发行。

3.如果将硬盘接在第一个IDE接口的从硬盘上,在Linux系统中这个硬盘代号是

hdb—。这个硬盘第二个逻辑分区的代号是__hdb6o

4.在Windows与Linux并存的计算机中,安全删除Linux而不影响Windows的两个步骤

分别是—删除Linux的引导装载程序—和—删除Linux的磁盘分区

5.从GNOME切换到KDE有两种方法,分别是—利用桌面切换工具和一利用登录画面.

6.Linux的虚拟终端有_7_个,从图形模式切换到第一个文字界面的快捷键组合是

Ctrl+Alt+_[F1]-[F6]o

7、在字符界面下退出当前登录的方法有两个,分别是—exit—和—Ctrl+D_o

8、系统要在今天的21:30关机,在字符界面下可以使用.shutdown-1121:30_命令来实

现。

9、拥有管理员root权限的用户在字符界面下重启Linux的命令有两个,分别是_reboot_

和—shutdown-rnow_o

10.想知道当前目录的绝对路径,可以在字符界面F输入pwd命令。

11.使用命令shutdown-c_可以取消已经在后台进行的shutdown指令内容,如果

想要取消当前正在运行的shutdown指令内容,可以使用快捷键_____Ctrl+c_0

12.将系统当前时间改为2009年12月1日1。时30分的命令是—date

120110302009o

13.想知道2009年1。月份的月历的命令是_cal102009。

14.Bash的命令提示符有两种,分别是—$和_#(系统管理员)

15.分屏显示出当前目录下的所有文件和子目录,包括隐藏文件和隐藏子目录的详细信息的

命令是______Is-al|more。

16.想显示文件的第11-20行的命令是__head-n20文件名|tail-nlO。

17、在字符界面中想查找date命令的帮助信息,最常使用_man_命令。退出该帮助信息

的快捷键是

18、清除当前终端屏幕内容的命令是____clear,

19、在字符界面下可以通过—tab—键对输入的shell命令实现自动补全。

20、目前,Linux用于保存数据的磁盘分区所采用的默认文件系统为ext3。

21.在字符界面,欲为命令“Is-al”设置一个别名为“11”,那么设置的命令为

alias11=9Is-af。

22.分屏显示文本文件的命令有两个,其中—less命令可以使用pageup、

pagedown等按键的功能向前向后翻看,因此更加灵活。

23.将Is-al命令执行的结果不在标准输出设备上显示,而是保存到result.txt进行输出的命

令是______Is-al>result.txt。

24.bash可以记录一定数量已经执行过的命令,这些命令都被存放在bash_history文件中,

可以通过_______history命令来查看Shell命令的历史记录。

25.某文件的访问权限用数字法表示为765,用字母法则表示为_rwxrw-r-x—。

三、判断题(本题共6空,每空1分,共6分)

1.在普通用户账户下可以使用命令shutdow.-.now进行关机……)

2.以2009/10/10格式显示时间的命令是date+%y/%m/%do(F)

3.命令cd/var/表示从根目录开始寻址进入指定的绝对目录。(T)

4.命令cd~和命令cd~user的作用完全相同,都是回到用户的主目录。(F)

5.cat和tac功能相同,但是显示的结果恰好相反)

6.GNU软件也叫自由软件,是指源代码公开,但不可自由传播的软件……)

四、简答题(本题型共5小题,共40分)

1.什么是Linux?(6分)

简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intelx86

系列CPU的计算机匕其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使

用的Unix兼容产品。

2.Linux的应用领域有哪些?(6分)

集成计算机、桌面、服务器、嵌入式系统

3.Linux的主要组成部分从广义上来讲有哪几部分构成?(8分)

内核、Shell.文件系统、实用工具

4.简述XWindow的工作原理。(10分)

用户的输入信息由XServer接受后,通过X协议传递给XClient,XClient根据用户的指示

执行相应的程序,并把显示结果返回给XServer,XServer根据XClient返回的显示结果,

在显示器中建立窗口,并在窗口中显示图形和文字

每一套XWindow系统只有一个唯一的XServer

XServer用来负责建立窗口、在窗口中画图形影像和文字、回应XClient程序的请求

XClient仅仅是实现系统窗口功能的一些应用程序,如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论