TLPI源代码运行与勘误表

59 篇文章 1 订阅

上周末开始看《UNIX/Linux系统编程手册》这本书,周末的时间看到第四章,觉得这本书比直接看Linux内核要好接受的多,因为从代码入手,可以更好的理解,比如第三章系统调用的讲解,如果只是理论方面可能比较枯燥,那么这本书中的代码,如何运行呢?

下载代码

这本书的主页.代码版本有两个:
Distribution version: a tarball of the source code that includes extra material not shown in the book. Probably, this is the version of the code that you want.
Book version: a tarball of the source code as it appears in the book.
可以根据自己的选择下载,我下载的是第一个版本,可以点击上面的链接下载,如果下载失败,可以去主页下载.
下载代码,解压之后,如下图所示:

在tlpi-dist目录下执行make,然后去每一个文件下单独查看,可以发现每一个.c文件都生成了对应的可执行文件.在每一个子文件夹中都有一个make文件,有关make的作用我们可以理解为我们写了.c文件要去编译, 由于要包含作者的错误打印等头文件,所以使用gcc不再像我们之前gcc -o hello hello.c这样简单,要用include包含头文件等,而makefile就比较简单,每次代码有更改直接在对应的目录下执行make,就会生成新的可执行文件.

我们以第四章一个代码,作为例子:

我们在运行程序前先新建一个hello,里面存入内容,执行,/copy会看到相应的用法,这是作者利用usageErr打印出来的内容,然后我们按照相应提示去执行,验证,当修改相应代码后,再次执行make,会重新生成可执行文件.
C语言命令行部分介绍参考我的文章C语言命令行参数介绍
关于第三章的可变参数部分,请参考我的笔记,如果有任何疑问与问题,欢迎与我交流讨论。
如果下载代码之后make出错,没有生成相应的可执行文件,请升级gcc版本,参考Segmentfault相应回答

勘误表

勘误表
英文pdf

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.本题目为模拟UNIX文件系统来设计一个多用户多级目录的文件系统。 1)课程设计所利用的空间为1M的内存(模拟外存文件系统存储空间)或用一个文件模拟一个磁盘分区,模拟外存文件系统存储空间。这1M内存分成512块,每块为512个字节,这512块就是文件系统总共的可用块数,文件系统的分配就是以块为单位来分配的,空闲块的管理利用位示图的方法来管理。申请1M的内存的方法可以利用malloc()等。 2)在构造文件系统空间时,不用做引导块;专用块中只包含对空闲块和空闲磁盘i节点进行管理的信息,即位示图和记录空闲磁盘i节点号的数组(该数组大小可设置为与磁盘i节点总数相等);要做磁盘i节点区和文件存储区;不用做进程对换区。注意:仔细计算,合理分配各区域。 3)磁盘i节点可以利用在内存中生成链表或者数组的方法来生成,并且限制磁盘i节点数的最大值。同样内存活动i节点也可以利用链表的方法在内存中生成。 4)在往文件中写或者读的时候我们都是对内存中内容进行读写。例如你在文件中写的时候,其实是对分配的文件块中对应的内存赋值。当程序运行结束的时候,文件的内容都会丢失。我们这个文件系统只是一个模拟文件系统功能的虚拟文件系统。当然,若用一个文件模拟一个磁盘分区,模拟外存文件系统存储空间,那你在这个模拟系统中建立的文件其内容就不会丢失了 本程序使用txt文件模拟磁盘分区

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值