《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文件系统与操作 课后习题相关推荐

  1. Linux编程基础:第一章初识Linux课后习题及自我总结

    一.填空题 1.Linux操作系统的核心程序由芬兰赫尔辛基大学的一名学生(Linus Torvalds(林纳斯·托瓦兹))编写. [自我总结]Linux,全称GNU/Linux,是一种免费使用和自由传 ...

  2. Linux编程基础:第1章初识Linux 课后习题

    <Linux编程基础>黑马程序员/编著 清华大学出版社 目录 一.填空题 二.判断题 三.单选题 四.简答题 1.简单叙述Linux操作系统的特点. 2.陈述ifconfig命令和ping ...

  3. Linux编程基础:第4章Shell编程 课后习题

    <Linux编程基础>黑马程序员/编著 清华大学出版社 目录 一.填空题 二.判断题 三.单选题 四.简答题 1.分析以下脚本代码: 2.写出shell脚本中while循环与until循环 ...

  4. Linux编程基础:第2章命令与开发工具 课后习题

    <Linux编程基础>黑马程序员/编著 清华大学出版社 目录 一.填空题 二.判断题 三.单选题 四.简答题 1.简单说明Vi编辑器的工作模式,并画图说明各模式间的切换方法. 2.简述GC ...

  5. linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf

    Linux编程基础之进程等待(wait()函数) 编程过程中,有时需要让一个进程等待另一个进程 ,最常见的是父进程等待自己的子进程 ,或者父进程回收自己 的子进程资源包括僵尸进程.这里简单介绍一下系统 ...

  6. Linux编程基础之lseek函数返回值

    目录 前言 lseek函数返回值 实操证明 书的原图 总结 前言 操作系统:Fedora 头文件 <sys/types.h> , <unistd.h> lseek函数返回值 o ...

  7. 《Python编程快速上手——让繁琐工作自动化》——第一部分 Python编程基础 第1章 Python基础 1.1 在交互式环境中输入表达式...

    本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第1章,第1.1节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...

  8. WPF编程基础入门 ——— 第二章 XAML

    XAML 简述 XAML(eXtensible Application Markup Language,可扩展应用程序标记语言)是微软公司创建的一种新的描述性语言,用于搭建应用程序用户界面.XAML实 ...

  9. Python编程从入门到实践(第二版)课后习题自写代码

    Python编程从入门到实践(第二版)课后习题自写代码 第八章 函数 最近自学的python,动手做了一下课后习题,错误也许会有,和大家一起探讨.多多指教! 8.3 返回值 动手试一试代码片 &quo ...

最新文章

  1. 动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
  2. Flyme6系统适配教程(Patchrom)
  3. fetch 与引用规格(refspec)—— Git 学习笔记 23
  4. JavaScript实现唯一路径问题的动态编程方法的算法(附完整源码)
  5. MyEclipse里运行Tomcat后,Console窗口里中文显示乱码
  6. python 列表数据类型 200221
  7. cad lisp 两侧偏移并删除_CAD做钣金件展开的原理你知道吗?
  8. plus.webview.create( url, id, styles, extras )参数及说明
  9. 5.Linux/Unix 系统编程手册(上) -- 深入探究文件IO
  10. 拓端tecdat|matlab实现MCMC的马尔可夫转换MS- ARMA - GARCH模型估计
  11. 基于开源文本摘要模块sumy的文本摘要生成实践
  12. NoSQL之【MongoDB】学习(三):配置文件说明
  13. 阿里云云计算 30 AS的配置
  14. 利用Mapinfo工具转地图数据
  15. 面试宝典-Java反射机制
  16. 一文掌握智能抠图Deep Image Matting(pytorch实现)
  17. 如何用python编写抢票软件哪个好_又到疯狂抢票的高峰期,用python写一个简单的12306抢票软件...
  18. 双线双IP空间或者服务器域名解析说明
  19. 2020/03/11美版iPhone卡贴ICCID完美激活!
  20. faster-rcnn 训练自己的数据集

热门文章

  1. 期权套利组合 matlab,商品期权常见的组合套利策略(中)
  2. B2B 客户反馈:提高洞察数量和质量的 5 种方法
  3. 前5名:Linux计算机故事,超酷的docker工具,2016年有10个项目值得分派
  4. 16哈理工新生赛 C 方方正正 (证明题)
  5. JSK-16788 密码翻译【密码】
  6. 阿里成立独立芯片公司:起名为平头哥 自研AI芯片明年面世
  7. 【22】字体效果(阴影/浮雕)
  8. 如何在opencv中添加滑块
  9. 搞笑视频-石家庄某帅哥视频
  10. php函数 99乘法表,使用php自定义函数实现99乘法表代码