Unix/Linux编程实践教程

Bruce Molay

出版时间

2004-09-30

ISBN

9787302096139

评分

★★★★★

标签

计算机

书籍介绍
这不是一本按API手册编排的参考书,而是一场带着读者亲手造轮子的旅程。作者让你从`who`、`ls`、`pwd`起步,一步步写出自己的shell、Web服务器乃至许可证系统,把抽象的Unix机制拆成看得见摸得着的代码。读者最常回味的,正是这种
AI导读
核心看点
  • 通过重写ls、pwd等经典命令,深入理解Unix系统调用原理。
  • 循序渐进讲解进程、管道、信号及网络编程,构建完整知识体系。
  • 采用启发式教学,配合大量习题与图示,降低系统编程入门门槛。
读者共识
  • 被誉为Unix/Linux编程入门神书,被众多读者视为转折点般的经典之作。
  • 删繁就简,通过具体实例传授编程思想,比枯燥的字典式手册更易上手。
  • 虽出版年代较早且代码略显陈旧,但其核心概念讲解清晰,瑕不掩瑜。
精彩摘录
  • "实际上程序会立刻退出,而不执行重置驱动程序的代码。当返回shell显示提示符并从用户处获得命令行时,终端仍旧处于非阻塞模式。shell调用read获取命令行,但是因为处于非阻塞状态,read立即返回0。总之,程序结束时文件描述符处于一个错误的状态。"
  • "与普通文件一样,目录也有特殊属性位,其中包含set-user-ID和set-group-ID位,使set-user-ID有效对目录有什么影响?如果有,那是什么?为什么?如果没有影响,那么你能想象出这些位有什么作用吗?"
  • "while((n_chars = read(in_fd, buf, BUFFERSIZE)) > 0) { int write_res = write(out_fd, buf, n_chars); printf("%d\t%d\n", n_chars, write_res); if (write_res != n_chars) oops("Write error to ", av[2]); }"
  • "#define OUTFDCHOMD 0775 if ((out_fd = open(av[2], O_CREAT | O_WRONLY, OUTFDCHOMD)) == -1)"
  • "然而实际的运行结果并不是这样的,24行以后并没有暂停而是继续输出,问题在哪里呢? 当more01读入第24行后,它打印了more?,然后等待用户输入。 用户的输入是从哪里来的?在more01中用getchar(),它是从标准输入读数据的,问题就在这里。刚才的命令:$ls/bin|more01 已经将more01的标准输入重定向到ls的标准输出,这样more01将从同一个数据流中读用户的输入,这显然有问题 解决这个问题的方法是,从标准输入中读入要分页的数据,直接从键盘读用户的输入"
  • "习题4.10 rmdir不删除含有文件或子目录的目录。为什么要这么做? 另一方面,可以删除含有用户的目录。尝试一下的操作:生成一个由自己命名的新目录并进入这个目录,然后开启另一个命令窗口,删除这个新目录。关闭第二个命令窗口,输入命令/bin/pwd,看看将产生什么。"
  • "一个星期日的深夜,您在计算机实验室中使用Linux完成一个特殊的项目。您的home目录中有两个子目录data和olddata。data目录中包含有100个重要文件。olddata目录是空的。您决定移除olddata目录,但是,在输入命令时,一颗陨石打碎玻璃,正好击中坐在您身边的一个极客。在混乱中,您不小心键入了 rmdir data 幸运的是,Unix已经准备好处理这样的偶发事件。您将看到这样的消息: rmdir:data: Directory not empty 感谢Unix内置的安全防护措施,data目录原封不动,没有被删除。"
  • "树干是根目录。每个树枝都是子目录。在任何时候,您所处的那个树枝就是工作目录。移除一个工作目录就像据掉树枝一样。移除目录的限制就是您不能据掉那个正支撑您的树枝。 移除工作目录是可能的。就像砍掉您正坐在其上的树枝一样。或许Unix不允许这样做,但是却是可以这样做。"
目录
第1章 Unix 系统编程概述
第2章 用户、文件操作与联机帮助:编写 who 命令
第3章 目录与文件属性:编写 ls
第4章 文件系统:编写 pwd
第5章 连接控制:学习 stty

显示全部
用户评论
觉得是linux+C方面入门的好书,不管以前有没有过编程经验{看过chap2后所想}
本科在图书馆读过一部分,是一本好书! 应用层开发. 很清晰 教你写自己的ls,cd
不是很厚,说的很清楚。。。
linux编程入门首推!
我的Linux编程入门书,比较清晰的分类讲解了Linux的几大部分系统函数
醍醐灌顶
好书,为啥我没有早点遇到这本书?很可惜没有再出新版。
linux环境编程绝好的入门书,年代久远,但触及本质
# 最有价值的地方在于提供了一种自顶向下的学习方法,用三个问题来理解操作系统:(1)这个用户程序(命令行)的功能是什么;(2)它使用了什么系统调用或是库函数,可以借助man命令和grep命令等来确认;(3)自己动手实现它,并与操作系统提供的进行比对,思考如何在算法层面优化它。重心落在对系统调用的熟悉上。 这种方法也很好地体现了Unix接口的“策略与机制分离”的设计哲学。遗憾的是本书并未再版,很多代码不能直接跑起来,因而显得陈旧了。
用来做入门书非常好
下载
收藏