1、( 单选题 | 1 分)
假设下面代码中的foobar.txt中有6个ASCII字母,程序的输出是()
A .
c = f
B .
c = o
C .
c = b
D .
c = 随机数
正确答案: A
p635
2、( 多选题 | 1 分)
下面说法正确的是()
A .
Linux内核使用的file table 所有的进程共享的。
B .
不同进程打开同一个文件的文件描述符必须一样。
C .
使用dup2 把标准输入重定向到描述符7 dup2(7,0)
D .
使用dup2 把标准输入重定向到描述符7 dup2(0,7)
E .
ls > foo.txt 是输出重定向
F .
类型为FILE的流是对文件描述符和流缓冲区的抽象。
正确答案: A C E F p637 p638
dup2函数复制描述符表表项oldfd到描述符表表项newfd,覆盖描述符表表项newfd以前的内容。
3、( 多选题 | 1 分)
Linux内核用()表示打开的文件()
A .
描述符集
B .
文件表
C .
i-node表
D .
v-node表
正确答案: A B D
p634 内核用三个相关的数据结构来表示打开的文件:
- 描述符表
- 文件表
- v-node表
4、( 单选题 | 1 分)
struct stat的()标识文件的类型。
A .
st_size
B .
st_type
C .
st_mode
D .
st_rdev
正确答案: C
st_mode第一位 p632
5、( 单选题 | 1 分)
struct stat的()与chmod相关
A .
st_nlink
B .
st_mode
C .
st_size
D .
st_uid
正确答案: B
我参考了这篇[部落格](http://blog.csdn.net/h002399/article/details/49783595)
6、( 单选题 | 1 分)
下面代码的输出是()
A .
fd2 = 0
B .
fd2 = 1
C .
fd2 = 2
D .
fd2 = 3
E .
fd2 = 4
F .
不确定
正确答案: D
最低可用文件描述符原则(Lowst-Available-fd, LAf),打开文件时,为此文件安排的文件描述符总是最低可用的位置的索引
7、( 多选题 | 1 分)
read(fd, buf, 30)执行成功,返回可能不是30的是()
A .
读时遇到EOF
B .
从终端读文本
C .
读磁盘文件,但没遇到EOF
D .
读Socket
正确答案: A B D
p626 read函数从描述符为fd的当前文件位置2复制自多n个字节到内存位置buf。返回值为-1表示一个错误,而返回值0表示EOF。否在,返回值表示的是实际传送字节数量。
8、( 多选题 | 1 分)
write(2)的第一个参数fd可能来自()
A .
open(2)
B .
create(2)
C .
creat(2)
D .
close(2)
正确答案: A C
没有create(2)
9、( 多选题 | 1 分)
Unix/Linux中,对于代码fd=open("foo",O_WRONLY,0766),umask=022,下面说法正确的是()
A .
进程对foo是只写的
B .
同组成员能写foo
C .
使用者可以执行foo
D .
任何人都可以写foo
正确答案: A C
p624,p625 九个权限可以用0777表示,07(使用者)7(同组成员)7(其他人)
7(111)(读:写:执行),文件实际权限是mode&~mask
10、( 多选题 | 1 分)
关于open(2),下面说法正确的是( )
A .
flag 参数中O_RDONLY,O_WRONLY,O_RDWR至少要有一个
B .
O_RDONLY|O_WRONLY == O_RDWR
C .
fd=open("foo.txt",O_WRONLY|O_APPEND,0),调用write(fd,buff,n)写入foo.txt的数据不会破坏已有数据。
D .
fd=open("foo.txt",O_WRONLY|O_APPEND,0644),必将导致其他人不能写foo.txt
正确答案: A C
熟悉umask命令, open第三个参数实际是mode & ~umask
11、( 多选题 | 1 分)
有关Linux系统的目录,下面说法正确的是()
A .
目录是一种文件
B .
Linux将所有文件组织成目录层次结构
C .
home/rocedu/work/who1.c使用的是绝对路径
D .
./a.out使用的是相对路径
E .
.. 表示当前工作目录
F .
pwd命令可以查看当前工作目录的绝对路径
正确答案: A B D F
p623 p624
A:p623 目录是包含一组链接为文件
B:p623 linux内核将所有文件都组织成一个目录层次结构,由名为/的根目录确定。
C:绝对路径名以一个斜杠开始,表示从根节点开始的路径
D:相对路径名以文件名开始,表示从当前工作目录开始的路径
E:.表示当前当前工作目录,..表示上一级工作目录。
12、( 单选题 | 1 分)
下面()命令可以修改当前工作目录?
A .
mkdir
B .
cd
C .
pwd
D .
ls
正确答案: B
p624
A:使用权限:于目前目录有适当权限的所有使用者命令格式:mkdir [-p] DirName说明:建立一个子目录.
B:cd命令用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。
C:在Linux层次结构中,想要知道当前所处的目录,可以用pwd命令,该命令显示整个路径名。
D:ls命令用来显示目标列表。
13、( 多选题 | 1 分)
Linux中下列概念中可以用Unix I/O处理的是()
A .
普通文件
B .
设备文件
C .
目录
D .
套接字
正确答案: A B C D
p623 所有的I/O设备都被模型化为文件,每个Linux文件都有一个类型来表明他在系统中的角色:
- 普通文件
- 目录
- 套接字
- 字符和块设备
- 命名通道
- 符号链接
14、( 单选题 | 1 分)
相对内核而言,文件分为文本文件和二进制文件。其中文本文件只含有ASCII或Unicode字符。
A .
正确
B .
错误
C .
不确定
正确答案: B
p623 应用程序常常要区分文本文件和二进制文件,文本文件是只含有ASCII或Unicode字符的普通文件
15、( 多选题 | 1 分)
通过以下系统调用()可以获得文件描述符。
A .
fopen
B .
open
C .
creat
D .
close
正确答案: B C
man 2 open
16、( 多选题 | 1 分)
Linux shell创建的每个进程开始都默认打开的文件有()
A .
标准输入(fd=0)
B .
标准输出(fd=1)
C.
标准错误(fd=2)
D .
显示器和键盘
正确答案: A B C
p622 Linux shell创建的每个进程开始时都有三个打开的文件:标准输入(描述符为0)、标准输出(描述符为1)和标准错误(描述符为2).
17、( 单选题 | 1 分)
Unix I/O中标识文件的是()
A .
文件名
B .
文件指针FILE *
C .
文件描述符fd
D .
文件目录
正确答案: C
p622
18、( 单选题 | 1 分)
Unix/Linux中,
所有的I/O设备都被模型化为文件,而所有的输入输出都被当做对相应文件的读和写来执行。
A .
正确
B .
错误
C .
不确定
正确答案: A
p623
19、( 单选题 | 1 分)
输入输出是针对()来讲的?
A .
CPU
B .
主存
.
I/O设备
D .
计算机
正确答案: B
p623
20、( 单选题 | 1 分)
下面哪个操作系统概念可以对I/O设备进行抽象()?
A .
进程
B .
虚存
C .
文件
D .
虚拟机
正确答案: C