Unix/Linux编程实践教程 - Bruce Molay

Unix/Linux编程实践教程

Bruce Molay

出版时间

2004-09-30

ISBN

9787302096139

评分

★★★★★
书籍介绍

操作系统是计算机最重要的系统软件。Unix操作系统历经了几十年,至今仍是主流的操作系统。本书通过解释Unix的工作原理,循序渐进地讲解实现Unix中系统命令的方法,让读者理解并逐步精通Unix系统编程,进而具有编制Unix应用程序的能力。书中采用启发式、举一反三、图示讲解等多种方法讲授,语言生动、结构合理、易于理解。每一章后均附有大量的习题和编程练习,以供参考。

本书适合作为高等院校计算机及相关专业的教材和教学参考书,亦可作为有一定系统编程基础的开发人员的自学教材和参考手册。

AI导读
核心看点
  • 通过重写ls、pwd等经典命令,深入理解Unix系统调用原理。
  • 循序渐进讲解进程、管道、信号及网络编程,构建完整知识体系。
  • 采用启发式教学,配合大量习题与图示,降低系统编程入门门槛。
适合谁读
  • 具备C语言基础,希望系统学习Linux/Unix编程的计算机专业学生。
  • 对操作系统底层机制感兴趣,想从应用层深入理解系统原理的开发者。
  • 觉得《APUE》过于厚重,寻求更友好、实践导向入门教材的自学者。
读前提醒
  • 书中代码基于早期Unix,在Linux下运行需调整头文件及系统调用细节。
  • 务必动手编写书中示例代码,仅阅读无法真正掌握系统编程的精髓。
  • 建议结合《APUE》对照阅读,以弥补本书在部分复杂场景下的深度不足。
读者共识
  • 被誉为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接口的“策略与机制分离”的设计哲学。遗憾的是本书并未再版,很多代码不能直接跑起来,因而显得陈旧了。
用来做入门书非常好
Z-Library
收藏