71.进程可以忽略大部分信号,但下列信号中()不能忽略 A.SIGBORT B.SIGILL C.SIGQUIT D.SIGKILL
72.调用exec函数会将原来设置为要捕获的信号都更改为() A. 默认 B.忽略 C.另一捕获 D.默认或忽略 73.可用于在不同主机的进程间通信的技术是() A. 管道 B.共享内存 C.消息队列 D.套接字 74.只能在同源进程间通信的技术()
A. 普通管道 B.命名管道 C.消息队列 D.共享内存 75.不属于System V IPC通信技术的是()
A. 管道 B.消息队列 C.信号量 D.共享内存 76.建立从父进程到子进程的管道的方法()
A. 父进程关闭管道的写端,子进程关闭管道读端 B.父进程关闭管道的读端,子进程关闭管道的写端
C.父子进程都管道的读端 D.父子进程都关闭管道的写端
76.获取某个环境变量值使用函数A A.getenv B.putenv C.setenv D.unsetenv
77.文件系统保存在磁盘的B A.引导块 B.超级块 C.i节点块 D.数据块 78.Linux文件系统的根目录的i节点号为C A. 0 B. 1 C.2 D.3 79.文件描述符的数据类型是B A. char B.int C.double D.float 80.设置文件偏移量的系统调用是C A. truncate B. sync C . lseek
D.create
81.下面那个不是lseek第三个参数的取值C A.SEEK_SET B.SEEK_CUR C.SEEK_NOW D.SEEK_END 82.可以使用(C)系统调用获得符号链接所引用文件名称 A.link B.symlink C.readlink D.softlink 83.获得工作路径名称的系统调用是A A.getcwd B.getpwuid C.getgrgid D.getlogin 84.通过文件属性中的uid获得文件拥有者名字的系统调用是B A.getcwd B.getpwuid C.getgrgid D.getlogin 85.通过文件属性中的gid获得文件所属组名字的系统调用是C A.getcwd B.getpwuid C.getgrgid D.getlogin 86.根据文件路径来改变文件权限使用系统调用是B A.chown B.chmod C.fchmod D.fchown
一、填空题
1.Linux内核与发行版的关系:Linux Kernel 3.5.3是Linux内核版,而Ubuntu 12.04.1是Linux的发行版
2.Shell是linux系统的一种命令行用户界面,提供了用户与操作系统进行交互的接口,本质上是命令解释器,可为用户提供个性化的使用环境。
3.在Shell中测试运算有文件属性测试、字符串测试、数值测试、逻辑运算。 4. 专门执行整数算术运算的命令let所指表达式可执行C语言中常见的算术、逻辑、位运算、比较运算等。
5.Vi的三中工作模式:插入模式、命令模式、末行模式。
6.Gcc生成可执行文件的四个步骤:预处理、编译、汇编、链接。预处理是对源程序进行头文件加载和宏展开等操作,由cpp完成;汇编一是产生汇编代码,二是产生二进制的目标文件,由gcc使用as;生成的多.o文件和使用到的库文件链接成为可被操作系统执行的可执行程序,使用ld工具,可使用两类库文件。
7.库分为 静态库 和共享库 。静态库由多个.o文件组成的集合,文件成员没有特殊的存在格式,使用“ar”可维护和管理,库文件后缀为“.a”;共享库多个.o文件由编译器按照一定特殊的方式生成。多个可执行程序可共享库文件的代码段,但不共享数据。
8.命令行参数是main。函数的参数
Main函数的参数若有两个参数则第一个参数代表命令行参数个数、第二个参数代表指向各命令行参数字符串的指针数组。
9.Linux 中日期时间的表示方法有:算术类型、结构体类型、字符串类型。 10.如果一个C程序的入口表示为main(int argc,char *argv[]),编译该程序后的可执行程序为a.out,那么在命令“./a.out –f foo”后,main中的参数argv[1]指向的字符串是(“-f”)。
11.Linux系统下表示标准输入、标准输出和标准错误输出的文件描述符(符号表示)分别为(STDIN_FILENO、STDOUT_FILENO 、STDERR_FILENO),它们的值分别为0、1、2。 12.数字635表示的权限使用字母的方式表示为 (rw—wxr-x)、使用符号方式表示为(S_IRUSR | S_IWUSR | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH)。 13.系统调用open的功能是打开或创建文件。
14. 使用open打开文件时有三个标志必须要选择其一,这三个标志是O_RDONLY、O_WRONLY、O_RDWR。
15.文件偏移量代表下一次读或写的位置。
16.将文件偏移量市值为当前偏移处之前的4个字节的维护使用lseek(fd,(-4),(SEEK_CUR))。
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或lstat)系统调用显示文件属性信息。
24.chmod,chown,utime都可以修改文件i节点信息,其中chmod的功能是(更改文件权限)、chown的功能是(更改文件所有者和所属组)、utime的功能是(更改文件访问时间和修改时间)。 25.若实现将标准输出重定向到文件描述符为6对应的文件上,则应使用语句(dup2(6,1))。
26.系统调用(Unlink)的作用是删除目录项,这里的目录项是指(文件名和文件i节点的对应关系)。 27.打开目录使用(DIR *opendir(const char *name))系统调用,关闭目录使用( int closedir(DIR *dir))系统调用,读取目录内容使用(struct dirent *readdir(DIR *dir))系统调用。 28.chdir系统调用的功能是(改变当前目录)。
29.创建目录使用(int mkdir(const char *pathname, mode_t mode))系统调用、删除目录使用(int rmdir(const char *pathname))系统调用。
30.popen函数实现的操作:创建一个管道,fork一个子进程,然后关闭管道的不使用端,在子进程中exexc一个shell以执行一条命令,然后等到命令的终止。 31.使用kill发送信号时,发送方进程应具有相应的权限: 接受和发送进程的所有者相同,发送进程的所有者是超级用户
三、简答题
1.系统调用、库函数的区别和练习
从用户角度观察,系统调用和库函数都以C函数形式出现,提供给用户一种功能实现的接口,需要用户输入指定的参数,调用结束得到指定的返回值。 从实现者角度观察,库函数是在系统调用上层的函数,库函数一般指程序员可以使用的通用函数。
系统调用由两部分组成:
(1)核心函数:是实现系统调用功能的代码,作为操作系统的核心驻留在内存中,是一种共享代码。运行在核心态。
(2)接口函数:是提供给应用程序的API,以库函数的形式存在于Linux的lib.a中,该库中存放了所有系统调用的接口函数的目标代码,用汇编语言书写。其主要功能是把系统调用号,入口参数地址传给相应的核心函数,并使用户态下运行的应用程序陷入核心态。 4.完成如下命令
(1)新建用户tom 和用户组student #useradd tom #passwd tom
#groupadd student (2)新建文件file
#touch file
(3)将文件file 改名为test,然后将test拷贝到/home
#mv file test #cp test /home
(4)将/home/test文件的拥有着修改为tom,将文件所属组该为student
#chown tom:student /home/test
5.静态库和共享库的区别
(1)静态库的代码在编译时就已连接到开发人员开发的应用程序中。 (2)共享库只是在程序开始运行时才载入,在编译时,只是简单地指定需要使用的库函数。 (3)静态库文件以.a结尾,共享库文件以.so结尾。
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.写出open一下6种打开标志:只读、只写、读写、追加、文件不存在创建、截断为0
O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC 11.读程序,写出执行结果并解释得到该结果的原因 main() { int fd1,fd2; fd1=open(“/etc/passwd”,O_RDONLY); fd2=open(“/etc/passwd”,O_RDWR); printf(“fd1=%d,fd2=%d\\n”,fd1,fd2); close(fd1); close(fd2);
}
结果:fd1=3 fd2=4
原因:open返回的文件描述符为最小可用的非负整数,012是三个标准的文件描述符默认已经被占用,所以第一个open的返回值为3,第二个open返回的是4。
12.回答stat、fstat、latat三个系统调用的区别