Understanding UNIX/LINUX  Programming - Bruce Molay

Understanding UNIX/LINUX Programming

Bruce Molay

出版社

Prentice Hall

出版时间

2002-12-05

ISBN

9780130083968

评分

★★★★★
书籍介绍
For courses in Unix Systems Programming, Unix System Administration, and as a supplemental text for courses in Advanced Networks and Systems Programming. This readable and comprehensive text clearly explains Unix programming and structure by addressing the solid fundamentals of Unix and providing different solutions to problems. All ideas and principles are introduced in the context of a practical problem, and excellent use is made of illustrations and listings in the text. Projects are solved by the development of complete programs, which are clearly commented on and integrated with explanations in the text.
精彩摘录
  • "实际上程序会立刻退出,而不执行重置驱动程序的代码。当返回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不允许这样做,但是却是可以这样做。"
用户评论
劳资也有这一天(→_→)
what does it do->how does it work->let's write our own version。讲得也很清楚
关于 UNIX 编程入门的书,难度不高,循序渐进,读起来很轻松,也有不少收获,比较系统地了解(只能说是了解)了一遍 UNIX 基础。当然,这本书最大的问题也在于其写于近 20 年前,书中提到的一些命令和 API 在新版本 Linux 中已经被淘汰了,读的时候务必自行 man 查阅手册。
见中文版
相比APUE读起来轻松,手把手带你怎么找文件位置,用基本的read/write/buffer/tell手写基本指令
很强的一本书,课程问题虽然只看了前九章。讲解清楚,编写的代码也很有趣
THE Best introduction to UNIX system programming I ever read.
作者的讲解很有特色,读完之后会对Unix/Linux 系统有更深的了解
收藏