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

下载本文档

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

文档简介

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_lo

gout

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

A.*B.?C.[abode]D,[!a-e]

8.输出重定向符号右边的文件已经存在,不会覆盖文件而是

追加的定向符是(B)

A.>B.»C.2>D.&>

9.表不用户家目录的是(B)

A./home(所有用户家目录的父目录,+用户名才是用户家目

录)B.〜C..D...

10.可删除非空目录及其子目录的命令是(B)

A.touchB.rm-rC.mkdirD.rmdir空目录

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

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

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

A.Is-aB.Is-dC.ls-hD.ls-l

13.可通过接受标准输入作为输出内容来创建简单文件的命

令是(B)42

A.touchB.catC.viD.gedit

14.不带有编辑功能但有翻页、按行滚动、搜索功能的命令是

(B)43

A.catB.more和lessC.head和tailDvi

15.wc命令可统计文件的行数、字数和字节数。在下列格式

中只显示文件的字数的是(C)51

A.wcB.wc-cC.wc-wDwc-1

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

A.cpB.mvC.InDrename

17.在Linux系统中可通过挂载将光盘、U盘或一个文件系统

连接到主目录树的一个目录节点。期中光盘或光盘镜像对应

的文件系统类型是(C)44

A.vfatB.ext3C.iso9660Dvboxsf

18.下面更改文件命令只能更改符号连接的目标文件的权限

的命令是(C)

A.chownB.chgrpC.chmodD.以上都不对

19.chmod命令的权限模式可使用字符串形式或八进制形式,

当使用八进制形式时模式应由三或四位八进制构成,其中从

最高到最低位依次表示为(A)每个八进制的三个二进制位从

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

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

件所有者

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

件所属组

20.chmod命令的权限模式可使用字符串形式或八进制形式,

当使用八进制形式时模式应由三或四位八进制构成,其中每

个八进制的三个二进制位从高到低分别表示为有无(A)

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

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

A.赋予shell程序文件可执行权限,直接运行shell程序(外

部命令)

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

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

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

22.对于使用(C)连接的两条命令,只有当左边的命令执行

失败(退出状态为非0值)才会继续执行右边的命令。

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

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

A.别名B.函数C.内部命令D.外部命令

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

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

25.Shell变量不需要预先定义,若对其进行数值操作,可指

定变量的属性为整数,具体命令为D

A.declare-a变量名B.declare-f变量名C.typeset-r变量

名D.typeset-i变量名

26.Shell中可表示引用数组abrr中的所有非空元素的引用

是(B)76

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

27.在Shell变量引用操作符可实现字符串替换其中(C)用

来测试如果变量stra存在且不为空,则返回为word,否则返

回为空串78

A.${stra:-word}B.${stra:=word}C.${stra:+word}D.${str

a:?word)

28.在Shell变量引用操作符可实现字符串替换其中(D)用

来测试,如果变量stra存在,则返回为变量stra的值,否则

输出为word,并退出当前脚本程序

A.${stra-word}B.${stra=word}C.${stra:+word}D.${stra:

?word}

29.在Shell变量引用操作符可实现模式匹配替换其中(B)

用来的含义是若pattern匹配变量stra的头部,则删除最长

匹配部分并返回剩余部分。

A.${strattpattern}B.${stra##pattern}C.${stra%pattern}

D.${stra%%pattern)

30.为了使子进程能继承父进程中定义的变量,就必须使(D)

命令将这些变量送入进程转出区83

A.readB.setC.shiftD.export

31.使用(D)形式时,即使表达式中有Shell的特殊字符时,

也不必用双引号将其括起来。87

A.test表达式B.[表达式]C.let算术表达式D.((算术表达

式))

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

A.test表达式B.let算术表达式C.((算术表达式))D.$((算

术表达式))

33.gcc可以对编译阶段进行控制,其中(B)选项规定编译

到汇编语言,不进行其他操作。107

A.-EB.-SC.-cD.-o

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

件的路径

A.-LpathB.-IpathC.-HibraryD.-static

35.gcc可以对编译阶段进行控制,其中(D)选项在可执行

文件中包含标准调试信息,供gdb进行调试。

A.-WallB.-WerrorC.~wD.-g

36.在Linux底层文件访问中的大多数操作都是围绕文件描

述符来展开的其中(A)函数是内核向进程返回一个文件描述

符为以后使用148

A.open()B.read()C.write()D.close()

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

A.modeB.unmaskC.mode&unmaskD.mode&〜unmask非掩码

38.Lseek()中第三个参数的值为0表示(A)

A.文件开始位置B.文件读写指针当前位置C.文件结束位置

D.都不是

39.文件属性读取函数中,依据文件名且当文件是一个符号链

接时返回是链接所指向文件的信息的函数是(A)152

A.statB.IstatC.fstatD.都不是

40.利用文件属性读取函数获取的st_mode进行文件类型测

试方法正确的是D

A.对成员st_mode同文件类型掩码进行与运算B.对成员

st_mode直接判断

C.利用带成员st_mode参数宏(用于文件类型判断)定义D.A

和C都可以

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

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

42.下列底层文件访问函数中第一个参数是文件描述符的是

(C)157

A.chmodB.IchownC.fchownD.chown

43.硬链接是(B)162

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

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

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

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

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

有效,删除只对软链接有效。

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

C167

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

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

文件,参数指向目录项

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

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

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

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

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

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

49.在函数fopen()中文件打开模式中要求文件必须存在的模

式是(A)172

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

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

文件模式是(D)

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

51.在打开函数中其中是在由指定的流上打开由路径名指定

的文件,其返回值为指向文件流指针,此函数用于将一个指

定的文件打开为一个预定义的标准流(C)

A.openB.fopenC.freopenD.fdopen

52.以下函数中表示从某流中读取一个字符但该函数不带参

数,表示从标准输入流中读字符的函数是(C)174

A.getsB.getcC.getcharD.fgec

53.当到达文件尾端或出错时,字符读取函数的返回值都是

EOF,为进一步确认文件是否已到文件尾,应当通过(B)函数

来判断。

A.ferrorB.feofC.cleanerrD.perror

54.在定位函数中,可直接将流的读写指针设置到文件的起始

位置同时会将错误指示器errno清零的函数是()rewindl82

无答案

A.ferrorB.feofC.clearerrl74D.perror

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

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

的位移量

C.返回读写指针当前相对文件结束位置的位移量D.会撤销已

调用ungetc()对流的影响

56.格式化输出可把格式化数据输出到标准输出、指定文件及

字符缓冲区。其中()函数是将格式化数据输出到指定大小

的字符缓冲区。(D)183

A.printfB.fprintfC.sprintfD.snprintf

57.格式化输入可从标准输入、指定文件及字符缓冲区读取格

式化数据。其中()函数是输出到指定文件。(B)

A.printfB.fprintfC.sprintfD.snprintf

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

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

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

限制

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

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

用abort

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

A.字符I/0B.行I/0C.歹ijI/0D.块I/O

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

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

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

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

A.调用exec函数B.调用exit/exitC.从main返回D.收到

一个系统终止信号

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

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

顺序相同

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

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

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

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

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

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

据段一正文段

C.正文段一堆一栈-数据段―bSS段D.堆一正文段一数据段

—»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==-lB.pid==OC.pid>OD.pid<-l

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

A.0B.创建的子进程的进程标识号C.-ID.1

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

A.0B.创建的子进程的进程标识号C.-ID.1

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

213

A.SIGBORTB.SIGILLC.SIGQUITD.SIGKILL

72.调用exec函数会将原来设置为要捕获的信号都更改为

(A)214

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

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

A.管道B.共享内存C.消息队列D.套接字

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

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

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

A.管道B.消息队列C.信号量D.共享内存

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

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

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

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

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

A.getenvB.putenvC.setenvD.unsetenv

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

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

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

A.0B.IC.2D.3

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

A.charB.intC.doubleD.float

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

A.truncateB.syncC.IseekD.create

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

A.SEEK_SETB.SEEK_CURC.SEEK_N0WD.SEEK_END

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

内核版,而Ubuntul2.04.1是Linux的发行版

2.Shell是linux系统的一种命令行用户界面,提供了用户

与操作系统进行交互的接口,本质上是命令解释器,可为用

户提供个性化的使用环境。

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

测试、逻辑运算。

4.专门执行整数算术运算的命令let所指表达式可执行C语

言中常见的算术、逻辑、位运算、比较运算等。

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

6.Gcc生成可执行文件的四个步骤:预处理、编译、汇编、

链接。预处理是对源程序进行头文件加载和宏展开等操作,

由cpp完成;汇编一是产生汇编代码,二是产生二进制的目

标文件,由gcc使用as;生成的多.o文件和使用到的库文件

链接成为可被操作系统执行的可执行程序,使用Id工具,可

使用两类库文件。

7.库分为静态库和共享库。静态库由多个.0文件组成的集

合,文件成员没有特殊的存在格式,使用“ar”可维护和管

理,库文件后缀为“.a”;共享库多个.0文件由编译器按照

一定特殊的方式生成。多个可执行程序可共享库文件的代码

段,但不共享数据°

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

Main函数的参数若有两个参数则第一个参数代表命令行参数

个数、第二个参数代表指向各命令行参数字符串的指针数组。

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

字符串类型。

10.如果一个C程序的入口表示为main(intargc,

char*argv[l),编译该程序后的可执行程序为a.out,那么

在命令".la.out-ffoo”后,main中的参数argv[1]指向的

字符串是(三寸二)。

11.Linux系统下表示标准输入、标准输出和标准错误输出

的文件描述符(符号表示)分别为(STDINFILENO、

STDOUTFILENO、STDERRFILENO),它们的值分别为0、1、2。

12.数字635表示的权限使用字母的方式表示为(rw—

wxr-x)、使用符号方式表示为

(SIRUSRlSIWUSRlSIWGRP|SIXGRP|SIROTH|SIXOTH)。

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

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

个标志是0RDONLY、0WRONLY、0RDWR。

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

16.将文件偏移量市值为当前偏移处之前的4个字节的维护

使用keek(fd,(―4),(SEEKCUR))。

17.设置打开文件标志(0TRUNC),可以截断文件为0,使

用系统调用(truncate)可以截断文件或者加长文件。

18.如果umask设置为022,则创建一个新文件夹(数字表

示)的权限为(晒)、创建一个新目录的权限为(遢)。

19.如果umask设置为024,则创建一个新文件夹(数字表

示)的权限为(蟠)、创建一个新目录的权限为(遢)。

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

字。

21.创建硬链接使用系统调用(Hi也),创建符号链接使用系

统调用(symlink)。

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

23.可以使用(stat或fstat或Istat)系统调用显示文件

属性信息。

24.chmod,chown,utime都可以修改文件i节点信息,其

中chmod的功能是(更改文件权限)、chown的功能是(更改

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

和修改时间)。

25.若实现将标准输出重定向到文件描述符为6对应的文件

上,则应使用语句(dup2(6,1))。

26.系统调用(Unlink)的作用是删除目录项,这里的目录

项是指(文件名和文件i节点的对应关系)。

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

用,关闭目录使用(intclosedir(DIR*dir))系统调用,读

取目录内容使用(structdirent*readdic(DIR*dir))系统调

用。

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

29、创建目录使用

(intmkdir(constchar*pathname,modetmode))系统调用、

删除目录使用(intrmdir(constchar*pathname))系统调用。

30.popen函数实现的操作:创建一个管道,fork一个子进程,

然后关闭管道的不使用端,在子进程中exexc一个shell以

执行一条命令,然后等到命令的终止。

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

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

三、简答题

I,系统调用、库函数的区别和练习

从用户角度观察,系统调用和库函数都以C函数形式出现,

提供给用户一种功能实现的接口,需要用户输入指定的参数,

调用结束得到指定的返回值。

从实现者角度观察,库函数是在系统调用上层的函数,库函

数一般指程序员可以使用的通用函数。

系统调用由两部分组成:

(1)核心函数:是实现系统调用功能的代码,作为操作系统

的核心驻留在内存中,是一种共享代码。运行在核心态。

(2)接口函数:是提供给应用程序的API,以库函数的形式

存在于Linux的lib.a中,该库中存放了所有系统调用的接

口函数的目标代码,用汇编语言书写。其主要功能是把系统

调用号,入口参数地址传给相应的核心函数,并使用户态下

运行的应用程序陷入核心态。

4.完成如下命令

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

ttuseraddtom

ttpasswdtom

ttgroupaddstudent

(2)新建文件file

fttouchfile

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

ftmvfiletest

#cptest/home

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

该为student

ftchowntom: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_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP|S_

IROTH|S_IWOTH|S_IXOTH

10.写出。pen一下6种打开标志:只读、只写、读写、追加、

文件不存在创建、截断为0

0_RD0NLY0_WR0NLY0_RDWR0_APPEND0_CREAT0_TRUNC

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

main()

{

intfdl,fd2;

fdl=open(^/etc/passwd??,0_RD0NLY);

fd2=open("/etc/passwd”,0_RDWR);

printf(^fdl=%d,fd2=%d\n?,,fdl,fd2);

close(fdl);

close(fd2);

)

结果:fdl=3fd2=4

原因:open返回的文件描述符为最小可用的非负整数,012

是三个标准的文件描述符默认已经被占用,所以第一个open

的返回值为3,第二个open返回的是4。

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

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

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

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

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

12.dup和dup2的区别和联系

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

符指向的打开文件描述。

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

dup2返回的新文件描述符可以通过第二个参数指定。

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

(1)命令

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

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

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

(3)删除原文件/目录

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

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

(4)删除链接文件

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

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

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

14.fork与vfork区别?

(1)fork创建的子进程复制父进程的整个地址空间,vfork

不创建这一副本,子进程借用父进程的地址空间,直到其调

用exec族函数或终止;

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

创建子进程后挂起父进程,直到子进程终止或调用exec族函

数。

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

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

户。

15.阅读以下代码,若execlp调用成功的话,“Done!”会打

印输出吗?为什么?

#include<stdio.h>

intmain()

{

printf(aRunningpswithexeclp\n);

execlpvps,ps,-at,0);

printf("Done!\n");

exit(0);

)

不会输出"Done!”。

原因:

执行execIp("ps"ps"J-af”,0)调用成功后,当前

进程的地址空间被新的程序ps所替代,将执行“ps-af”

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

intx=O,inty=O;

voidthreadl(void)

printf(^Thisispthreadl.thesentencel\n??);

y=7;

sleep(1);

printf(^Thisispthreadl.thesentence2\n??);

x=x+y;

}

voidthread2(void)

|

printf(^Thisispthreadl.thesentencel\n??);

x=4;

sleep(1);

printf(^Thisispthreadl.thesentencel\n??);

y=8+y;

)

voidmain(void)

|

pthread_tidl,id2;

pthread_create(&idl,NULL,(void*)threadl,NULL);

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

pthread_join(idl,NULL);

pthread_join(id2,NULL);

printf(^x=%d,y=%d\nv,x,y);

)

Thisispthreadl.thesentensel

Thisispthread2.thesentensel

Thisispthreadl.thesentense2

Thisispthread2.thesentense2

x=ll,y=15

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

线程1执行sleep(l);后阻塞,线程2继续执行,线程2执

行到sleep(l);时线程2阻塞,线程1阻塞结束继续执行聿

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

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

y。

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

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

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

方法。

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

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

(5)消息队列:消息的链表,链表中每个节点包括消息类型

和正文两部分。

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

18.PIPE与FIFO的区别与联系

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

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

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

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

用。

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

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

号SIGINTo

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

(3)进程执行某个系统调用。如调用kill向某个进程或进

程组发送信号。

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

(1)生成(generating)o内核要更新目标进程的数据结构,

表示一个新的信号已经被发送给此进程。此时,进程并没有

对信号做出任何响应。

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

四、编程题

1.向文件fl中写入“helloworld!”,然后再将fl中的内容

读出并显示在屏幕上。(注意必要的错误判断)

#include<unistd.h>

#include<sys/stat.h>

#include<sys/fcntl.h>

intmain()

{

intfd;

charbuf1[13]={',helloworld!"};

charbuf2[12];

intnum;

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

if(fd==~l)

(

perror(nfInotopen");

exit(1);

)

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

if(num!=(sizeof(buf1)-1))

printf(',writelessthanwant\nn);

lseek(fd,O,SEEK_SET);

num=read(fd,buf2,12);

if(num!=12)

printf(nreadlessthan12\nH);

write(1,buf2,12);

close(fd);

)

2.向文件f2中写入“aabbccddee”,然后将偏移量移到绝对

值偏移为4的位置处,读6个字符,并将结果显示在屏幕上

#include<unistd.h>

#include<sys/stat.h>

#include<sys/fcntl.h>

intmain()

(

intfd;

charbuf1[ll]={',aabbccddeen);

charbuf2[10];

intnum;

fd=open("f2",0_RDWR|O_CREAT10_TRUNC,0644);

if(fd==-l)

(

perror(nf2notopen");

exit(1);

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

if(num!=(sizeof(buf1)-1))

printf(Kwritelessthanwant\n");

lseek(fd,4,SEEK_SET);

num=read(fd,buf2,6);

if(num!=6)

printf(nreadlessthan6\nn);

write(1,buf2,6);

close(fd);

)

3.向文件f3中写入“aabbccddeeffgghh”,然后将文件截短

后的文件内容读出并显示在屏幕上

#include<unistd.h>

#include<sys/stat.h>

#include<sys/fcntl.h>

intmain()

(

intfd;

charbuf1[17]={naabbccddeeffgghhn);

charbuf2[8];

intnum;

fd=open(3",0_RDWR10_CREAT10_TRUNC,0644);

if(fd==-l)

perror(,ff3notopen");

exit(1);

)

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

if(num!=(sizeof(buf1)-1))

printf("writelessthanwant\nn);

lseek(fd,O,SEEK_SET);

ftruncate(fd,8);

num=read(fd,buf2,8);

if(num!=8)

printf("readlessthan8\n");

write(1,buf2,8);

close(fd);

)

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

#include<fcntl.h>

main(intargc,char*argv[])

|

intfd;

intnum;

charbuf[10];

if(argc!=2)

printf("missfilename\n");

exit(1);

}

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

if(fd==-l)

(

perror(nerroropen");

exit(1);

}

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

write(1,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(nargumenterror\nn);

exit(1);

}

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

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

num=read(from,buf,10);

while(num!=0)

|

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(',fr,,O_WRONLY|O_CREAT,0644))==-l)

perror("openfai1");

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

perror("Redirectfailed");

printf("Helloworld\nn);

close(fd);

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

子进程pid,在父进程中打印alamthefather和父进程pid

#include<sys/types.h>

#include<stdlib.h>

#include<stdio.h>

intmain()

(

pid_tpid;

pid=fork();

if(pid<0)

perror(nfork");

exit(1);

elseif(pid二二0)

printf("Iamthechild\n");

else

printf("Iamthefather\n");

exit(0);

)

8.创建子进程,在子进程中执行“ps-A”命令,父进程等待

子进程结束后打印"childover”

及所处理的子进程进程号

#include<sys/types.h>

#include<stdlib.h>

main()

pid_tpid,cpid;

inti;

char*args[64];

args[0]=??ps";

args[1]=??-A";

args[2]=NULL;

pid=fork();

if(pid<0)

perror(“fork”);

exit(1);

elseif(pid=0)

(

execvp(args[0],args);

exit(0);

)

else

(

cpid=wait(NULL);

printf("childover!cpid=%d\n”,cpid);

9.编写程序处理SIGINT信号,当程序接收到SIGINT信号后

输出“SIGINTiscaught”

#include<stdio.h>

#include<signal.h>

voidsignal_handler(intsignum)

switch(signum)

|

caseSIGINT:

printf(nSIGINTiscaught!\n");

break;

)

}

intmain()

|

signal(SIGINT,signal_handler);

pause();

returnO;

)

10.使用PIPE时限父子进程向子进程发送1234567890,子

进程接收并显示

#include<sys/types.h>

#include<stdio.h>

main()

(

intpfd[2];

charbuf[32];

pid_tpid;

pipe(pfd);

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

perror("fork");

elseif(pid>0)

{

close(pfd[0]);

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

)

else

{

close(pfd[l]);

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

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

一、单项选择题

1、Linux操作系统内核创始人是(C)

A.BillGatesB.RichardStalIman

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、IDEO接口上的从盘B、IDEO接口上主盘的第三个分区

C、IDEO接口上的第三个主分区D、IDEO接口上的第三个逻

辑分区

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

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

6、Linux下的cd命令可以改变用户的当前目录,当用户键

入cd并按回车后,(A)o

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

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

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

A、startB、startxC、beginD、beginx

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

每空1分,共40分)

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—。

8、系统要在今天的21:30关机,在字符界面下可以使用

—shutdown-h21:30—命令来实现。

9、拥有管理员root权限的用户在字符界面下重启Linux的

命令有两个,分别是jeboot—和—shutdown-rnow_o

10、想知道当前目录的绝对路径,可以在字符界面下输入

pwd命令o

11、使用命令shutdown-c_可以取消已经在后台进行

的shutdown指令内容,如果想要取消当前正在运行的

shutdown指令内容,可以使用快捷键Ctrl+c—。

12、将系统当前时间改为2009年12月1日10时30分的命

令是datel20110302009。

13、想知道2009年10月份的月历的命令是_call02009。

14、Bash的命令提示符有两种,分别是$和_#(系

统管理员)。

15、分屏显示出当前目录下的所有文件和子目录,包括隐藏

文件和隐藏子目录的详细信息的命令是

Is-al|more。

16、想显示文件的第11-20行的命令是head-n20文件

名|tail-nlOo

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

_man_命令。退出该帮助信息的快捷键是_q_。

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

19、在字符界面下可以通过tab键对输入的shell命

令实现自动补全。

20、目前,Linux用于保存数据的磁盘分区所采用的默认文

件系统为ext3o

21、在字符界面,欲为命令"Is-al”设置一个别名为“11”,

那么设置的命令为aliasll='ls_al'。

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.在普通用户账户下可以使用命令shutdown-hnow进行关

机。(F)

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

3.命令cd/var/www/html表示从根目录开始寻址进入指定的

绝对目录。(T)

4.命令cd~和命令ccfuser的作用完全相同,都是回到用户

的主目录。(F)

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

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

播的软件。(F)

四、简答题(本题型共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仅仅是实现系统窗口功能的一些应用程序,如GNOME

XClient无法直接影响窗口或显示,只能送一个“请求”给

XServer,让XServer来完成它们的请求

5.命令提示符[jerry@rhel3/]的含义是什么?(10分)

当前账户名称:jerry

主机名:rhel3

根目录:/

一、选择题

1)下列关于操作系统的叙述中,哪一条是不正确的?(C)

A.操作系统管理计算机系统中的各种资源B.操作系统为用户提供良好的界面

C.操作系统与用户程序必须交替运行I).操作系统位于各种软件的最底层

2)Linux的发展始于()年,它是有()的一名大学生开发的。(A)

A.1990、芬兰B.1991、芬兰C.1993、美国D.1991、波兰

3)内核不包括的子系统是(D)o(进程管理系统\内存管理系统\1/0管理系统'虚拟文件系统'进程间同性间通信子系统)

A.进程管理系统B.内存管理系统C.I/O管理系统D.硬件管理系统

4)Linux中权限最大的账户是(B)o

A.adminB.rootC.guestD.super

5)在通常情况下,登录Linux桌面环境,需要(B)«

A.任意一个帐户B.有效合法的用户帐号和密码C.任意一个登录密码D.本机IP地址

6)在RedHatEnterpriseLinux5中要配置计算机的IP地址,需要打开哪个菜单(C)。

A.“应用程序”-wInternet"B.“系统”-"首选项''一"网络代理”

C.“系统”一“管理"~“网络"D.“位置”~“网络服务器”

7)配置网卡时,下面哪一项一般不需要配置(D)。

A.IP地址B.子网掩码C.默认网关地址D.MAC地址

8)Linux文件权限中保存了(D)信息。

A.文件所有者的权限B.文件所有者所在组的权限

C.其他用户的权限D.以上都包括

9)Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在(C)目录中。

A./binB./etcC./devD./lib

10)某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为(D)。

A.467B.674C.476D.764

11)文件exerl的访问权限为rw-L-r-,现要增加所有用户的执行权限和同组用户的写权限,下列命令正确的是(A)。

A.chmoda+xg+wexerlB.chmod765exerl

C.chmodo+xexerlD.chmodg+wexerl

12)当前安装Linux的主机中位于第二个IDE接口的master接口挂接一块40GB的硬盘,其在Linux中的设备文件名为(B)。

A./dev/hadB./dev/hdbC./dev/hdcD./dev/hdd

13)已知Linux系统中的唯一一块硬盘是第一个IDE接口的master设备,该硬盘按顺序有3个主分区和一个扩展分区,这个扩展分区

又划分了3个逻辑分区,则该硬盘上的第二个逻辑分区在Linux中的设备名称是(C)o

A./dev/hda2B./dev/hda5C./dev/hda6D./dev/sda6

14)在redhatLinux系统中,下列哪个命令可以用来将分区挂载到目录:(A)

A.fdiskB.mkfsC.tune2fsD.mount

15)在redhatLinux系统中,所有文件系统的挂载信息存放在哪个配置文件中:(B)

A./etc/passwdB./etc/fstabC./etc/modules,confD./etc/inittab

16)在redhatLinux系统中,下列哪个命令可以用来激活服务的不同运行级别:(D)

A.activeB.makeC.turnD.chkconfig

17)在redhatLinux系统中,硬件驱动程序配置信息存放在那个配置文件中:(C)

A./etc/passwdB./etc/fstabC/etc/modules.confD./etc/inittab

18)在redhatLinux系统中,下列哪个命令可以用来查看kernel版本信息:(D)

A.checkB.IskernelC.kernelD.uname

19)将WindowsC:盘(hdal)安装在Linux文件系统的/winsys

温馨提示

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

评论

0/150

提交评论