Linux编程基础:第5章Linux文件系统与操作 课后习题
《Linux编程基础》黑马程序员/编著 清华大学出版社
目录
一、填空题
二、判断题
三、单选题
四、简答题
1、简单说明软链接文件和硬链接文件的区别。
2、已知inode结构体中的共有15个索引项,其中直接索引项12个,间接索引项、二级索引项、三级索引项各一个,另每个索引项的大小为4个字节。假设系统中每个数据块的大小为1kb,计算inode结构体中索引项可索引的数据块总大小。
3、简述文件IO与标准IO的区别。
五、编程题
1、编写程序,使用系统I/O从指定文件中读取数据,并打印到终端。
一、填空题
1、磁盘中的第一个扇区非常重要,因为其中存储了与磁盘正常使用相关的重要信息,包括:(主引导记录)、(磁盘分区表)和魔数。
2、文件的inode编号可以通过(ls –i)命令查看,若要查看当前目录中普通文件test.c的inode编号,所用的命令为(ls –i test.c)。
3、在ext2文件系统中,磁盘分区中的空间会被分为多个块组,每个块组又分为6个部分,分别为:(超级块)、(组描述符表)、(块位图)、inode位图、(inode表)和数据块。
4、目录结构只是一个逻辑概念,只有将目录结构与物理存储设备关联起来,才能通过目录结构访问磁盘上的数据。Linux系统中通过(挂载)的方式,将物理地址与目录进行映射。
5、Linux系统中的文件可分为:(普通文件)、(目录文件)、设备文件和(特殊文件)。
二、判断题
1、Linux系统的文件描述符表中,进程打来的普通文件的文件描述符从3开始。 (√)
【解析】系统为每一个进程维护了一个文件描述符表(open file description table),用于存储进程打开文件的文件描述符,表中的数值从0开始,0~2号在程序启动时被系统标准文件(标准输入、标准输出和标准错误文件)占用,因此进程打开的普通文件其文件描述符从3开始。
2、特殊文件中较为常见的是链接文件,链接文件包括软链接文件和硬链接文件。 (×)
【解析】特殊文件中较为常见的是符号链接文件,符号链接文件又称为软链接文件。硬链接文件不属于特殊文件。
3、ext2文件系统布局中,每个块组分为六个部分,即启动块、组描述符表、块位图、inode位图、inode表和数据块。 (×)
【解析】ext2文件系统布局中,每个块组分为六个部分,即超级块、组描述符表、块位图、inode位图、inode表和数据块。启动块位于磁盘分区的第一个块中,用来存储磁盘的启动信息和分区信息。
4、inode结构体的索引数组中共有15个索引项,其中索引项0~11是直接索引项,索引项12是间接索引项,索引项13是二级间接索引,索引项14是三级间接索引。 (√)
5、Linux系统中文件的后缀名不表示文件类型,只表示与程序的关联。 (×)
6、Linux系统中文件的文件名存储在文件所在目录的dentry,而非文件本身。 (√)
【解析】Linux系统中定义了一个被称为目录项(dentry)的结构体,该结构体主要存储文件的文件名与inode编号,系统通过读取目录项中的文件名和文件的inumber,来判断文件是否存在于这个目录中。dentry中允许同一个inode对应不同的文件名,但不允许相同的文件名对应不同的inode。
三、单选题
1、选出下列各选项中不属于特殊文件的选项。 (D)
A、管道文件
B、符号链接文件
C、软链接文件
D、硬链接文件
【解析】硬链接文件不属于特殊文件。
2、选出下列选项中不属于ext2文件系统块组组成部分的选项。 (A)
A、启动块
B、组描述符表
C、inode位图
D、数据块
【解析】ext2文件系统布局中,每个块组分为六个部分,即超级块、组描述符表、块位图、inode位图、inode表和数据块。启动块位于磁盘分区的第一个块中,用来存储磁盘的启动信息和分区信息。
3、已知inode结构体中的每个索引项占4个字节,假设数据块的大小为1kb,那么一个二级索引项可索引的数据块数量为。 (B)
A、256
B、
C、
D、
【解析】二级索引项索引的数据块中存储了1024/4=256个索引项,这些索引项索引的数据块中也存储索引,即有256kb的空间存储索引,这些空间能存储256*1024/4,即个数据块。
4、选出下列选项中用于创建文件系统的命令。 (B)
A、fdisk
B、mkfs
C、du
D、mount
【解析】fdisk命令用于创建磁盘分区;du命令用于计算文件或目录占用的磁盘空间;mount命令用于挂载磁盘分区;mkfs命令用于创建文件系统。
5、若系统中的硬盘驱动设备以如图所示的方式进行分区,那么以下各选项中,哪个文件不是与该设备对应的设备文件。 (D)
A、/dev/sda1
B、/dev/sda5
C、/dev/sda2
D、/dev/sda3
【解析】Linux系统中逻辑分区的编号从5开始,这是因为编号1~4被预留给主分区表中的设备文件使用,即使主分区表中的分区不足4个,逻辑分区的设备文件也不能使用编号1~4。综上所述,本题选D。
6、lseek()操作成功时,其返回值为。 (A)
A、当前文件偏移量
B、文件位置指针移动的字节数
C、原来的文件偏移量
D、0
【解析】若偏移量设置成功,lseek()函数则会返回新的偏移量,否则返回-1。
7、若要删除一个文件,需要有哪种权限。 (D)
A、对文件有读权限和执行权限
B、对文件有读权限和写权限
C、对文件有读、写和执行权限
D、对文件所在目录有写和执行权限
【解析】Linux系统中文件的文件名存储于其所在的上级目录中,删除文件的实质,是删除文件在其上级目录中存储的文件名等信息,如此文件系统将无法根据路径名找到文件,文件也就相当于被删除了。综上所述,要删除文件,需要执行对其上级目录的修改,因此需要有对文件上级目录的写权限和执行权限。
四、简答题
1、简单说明软链接文件和硬链接文件的区别。
创建链接文件的命令为ln,该命令默认创建硬链接文件,若与选项-n搭配使用,则会创建软链接文件。软链接文件是一个新文件,系统会为软链接文件分配inode;软链接文件中存储的内容为其所链接对象的路径。硬链接文件与其所链接的文件共用inode,创建硬链接文件时,该文件的文件名作为一条记录添加到其路径名中目录的dentry中,同时其链接对象的硬链接数会加1。
2、已知inode结构体中的共有15个索引项,其中直接索引项12个,间接索引项、二级索引项、三级索引项各一个,另每个索引项的大小为4个字节。假设系统中每个数据块的大小为1kb,计算inode结构体中索引项可索引的数据块总大小。
解:[12+1024/4+(1024/4)2+(1024/4)3]×1kb
=(12+256+2562+2563)×1kb
=16843020kb
≈16.06G
答:inode结构体中索引项可索引的数据块总大小约为16.06G。
3、简述文件IO与标准IO的区别。
文件I/O又称系统I/O,存在于系统函数库中,文件I/O没有缓冲机制,操作的对象是文件描述符;标准I/O存在于标准C库中,有缓冲机制,操作的对象是数据流。
五、编程题
1、编写程序,使用系统I/O从指定文件中读取数据,并打印到终端。
程序实现如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main()
{int fd = 0;char filename[20] = "./a.txt";fd = open(filename, O_RDONLY); //打开文件if (fd == -1){perror("file open error.\n");exit(-1);}off_t f_size = 0;f_size = lseek(fd, 0, SEEK_END); //获取文件长度lseek(fd, 0, SEEK_SET); //设置文件读写位置char buf[100] = { 0 };while (lseek(fd, 0, SEEK_CUR) != f_size) //读取文件{read(fd, buf, 1024);printf("%s\n", buf);}close(fd);return 0;
}
Linux编程基础:第5章Linux文件系统与操作 课后习题相关推荐
- Linux编程基础:第一章初识Linux课后习题及自我总结
一.填空题 1.Linux操作系统的核心程序由芬兰赫尔辛基大学的一名学生(Linus Torvalds(林纳斯·托瓦兹))编写. [自我总结]Linux,全称GNU/Linux,是一种免费使用和自由传 ...
- Linux编程基础:第1章初识Linux 课后习题
<Linux编程基础>黑马程序员/编著 清华大学出版社 目录 一.填空题 二.判断题 三.单选题 四.简答题 1.简单叙述Linux操作系统的特点. 2.陈述ifconfig命令和ping ...
- Linux编程基础:第4章Shell编程 课后习题
<Linux编程基础>黑马程序员/编著 清华大学出版社 目录 一.填空题 二.判断题 三.单选题 四.简答题 1.分析以下脚本代码: 2.写出shell脚本中while循环与until循环 ...
- Linux编程基础:第2章命令与开发工具 课后习题
<Linux编程基础>黑马程序员/编著 清华大学出版社 目录 一.填空题 二.判断题 三.单选题 四.简答题 1.简单说明Vi编辑器的工作模式,并画图说明各模式间的切换方法. 2.简述GC ...
- linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf
Linux编程基础之进程等待(wait()函数) 编程过程中,有时需要让一个进程等待另一个进程 ,最常见的是父进程等待自己的子进程 ,或者父进程回收自己 的子进程资源包括僵尸进程.这里简单介绍一下系统 ...
- Linux编程基础之lseek函数返回值
目录 前言 lseek函数返回值 实操证明 书的原图 总结 前言 操作系统:Fedora 头文件 <sys/types.h> , <unistd.h> lseek函数返回值 o ...
- 《Python编程快速上手——让繁琐工作自动化》——第一部分 Python编程基础 第1章 Python基础 1.1 在交互式环境中输入表达式...
本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第1章,第1.1节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...
- WPF编程基础入门 ——— 第二章 XAML
XAML 简述 XAML(eXtensible Application Markup Language,可扩展应用程序标记语言)是微软公司创建的一种新的描述性语言,用于搭建应用程序用户界面.XAML实 ...
- Python编程从入门到实践(第二版)课后习题自写代码
Python编程从入门到实践(第二版)课后习题自写代码 第八章 函数 最近自学的python,动手做了一下课后习题,错误也许会有,和大家一起探讨.多多指教! 8.3 返回值 动手试一试代码片 &quo ...
最新文章
- 动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
- Flyme6系统适配教程(Patchrom)
- fetch 与引用规格(refspec)—— Git 学习笔记 23
- JavaScript实现唯一路径问题的动态编程方法的算法(附完整源码)
- MyEclipse里运行Tomcat后,Console窗口里中文显示乱码
- python 列表数据类型 200221
- cad lisp 两侧偏移并删除_CAD做钣金件展开的原理你知道吗?
- plus.webview.create( url, id, styles, extras )参数及说明
- 5.Linux/Unix 系统编程手册(上) -- 深入探究文件IO
- 拓端tecdat|matlab实现MCMC的马尔可夫转换MS- ARMA - GARCH模型估计
- 基于开源文本摘要模块sumy的文本摘要生成实践
- NoSQL之【MongoDB】学习(三):配置文件说明
- 阿里云云计算 30 AS的配置
- 利用Mapinfo工具转地图数据
- 面试宝典-Java反射机制
- 一文掌握智能抠图Deep Image Matting(pytorch实现)
- 如何用python编写抢票软件哪个好_又到疯狂抢票的高峰期,用python写一个简单的12306抢票软件...
- 双线双IP空间或者服务器域名解析说明
- 2020/03/11美版iPhone卡贴ICCID完美激活!
- faster-rcnn 训练自己的数据集