注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

My Unix World

不要迷恋Unix,Unix只是计算世界很小的一部分!

 
 
 

日志

 
 

【未整理】一点资料集合  

2008-12-12 01:56:42|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Linux操作系统主要就是一些配置文件和一些命令行工具,要掌握操作系统的主要目录结构和配置文件,运用系统的命令行工具完成常规的操作系统维护工作,监控工作。进而你可以安装部署一些企业应用,进行监控、管理等等。
把/etc目录下面常用的配置你都搞懂,把 /bin /sbin /usr/bin /usr/sbin下面常用的命令搞懂 会用shell编写常规的维护脚本
这样你已经非常厉害了。

==================================================================
把自己珍藏非常适合学习的一个linux内核的站点分享给大家:

http://www.linuxdriver.co.il/kernel_map

这个站点以地图的方式显示了linux 内核的各个部分,从底层的disk controller driver在内核顶端的storage,依次堆叠,而每一个部分都包含了若干的有用的连接,比如SICI/IDE等等子部分,这些连接会将你导向 linux的源代码,在每一部分的源代码里,也包含了指向其他函数的联接,十分方便查阅。


你不用在下载那堆杂乱无章的内核代码了,有了这个工具,在线学习更方便。


适用范围:

想学习linux内核,编写内核代码或者驱动程序的程序员。(想compile内核玩玩的就算了)。
=======================================================================
如何成为一名现代的Linux程序员

近几年来,Linux有了很大的发展,已从一个不起眼的小玩意发展到在越来越多的《财富》500强公司中发挥巨大作用。从人们使用的手机到最大型的超级计算机集群,几乎都在使用Linux内核和为Linux编译的软件。如何成为一名现代的Linux程序员呢?相信这一定是每一位Linux程序员都感兴趣的话题。

如果你是一位Linux程序员,想必你一定知道或读过《Linux程序设计(第3版)》这一经典著作(被评为07年的十大好书),这本书给许许多多的Linux程序员带去了帮助。读了这本书之后是不是还不过瘾?图灵公司又为你献上了另一顿饕餮大餐——《Linux高级程序设计》。

    本书是《Linux程序设计(第3版)》的进阶版,很好地回答了“如何才能成为一名现代的Linux程序员”这个大家普遍关心的问题。关于这个问题,浙江Linux专业委员会的副主席兼著名开源社区LUPA(www.lupaworld.com)的负责人邵炜先生如是说:“本书不是一本适合Linux初学者的指南,但是有经验的Linux程序员都能从中受益。它深入地阐述了Linux程序设计过程中所涉及的重要知识、技巧和常用工具,让你能更透彻地理解:‘作为一位现代Linux程序员,你究竟需要什么。’”

除此之外,本书还深入的讲解了Linux内核开发的相关知识,看看著名的Linux Magazine杂志是怎么说的吧。“本书出色地为其他平台的程序员揭示了Linux程序设计的复杂本质,而且特别强调了内核开发。为作者喝彩!”

本书的目的就是为了讨论这些问题以及其他问题。写作本书的目的源自于读者的这样一种需求,即究竟是什么使得Linux如此独一无二,但本书并不是一本适合Linux初学者的指南,因为这样的书早已在市场上存在了。这些年来,作为一位专业的Linux程序员,我们发现一起工作的很多技术精湛的软件工程师都缺乏或没有Linux编程方面的经验。其中一些工程师一直在寻找与本书类似的图书,但最后总是失望而归。为了让读者不再遭受这样的挫折,本书将帮助读者理解Linux社区的强大意义、已确立的软件开发模型和Linux世界中处理事务的方式。

有许多图书声称是专为Linux编程而写的,其中有许多书确实非常出色,但它们往往过于集中地介绍Linux简单继承自其前辈的内容。在本书中你不会发现这些内容,本书不是一本只介绍Linux和其他老版本UNIX系统共有内容的图书,而是一本介绍现代Linux操作系统的图书。本书不仅仅是另外一本UNIX编程类图书,它试图解释为什么Linux这么成功,并向读者展示在这个主题上被其他图书一笔带过或完全忽略的系统中的某些部分。

在本书中,你将学习到是什么推动了Linux的开发过程。你将了解各种各样常被Linux开发人员使用的工具——编译器、调试器和软件配置管理工具,以及这些工具是如何用来构建应用软件、工具甚至Linux内核自身的。你将学习到Linux系统中使其与其他类UNIX系统真正区分开来的特有组件,你还将深入研究Linux系统的内部工作机理,以便更好地理解作为新一代Linux开发人员你所需要扮演的角色。

你将学习一些新颖的开发方法,包括虚拟化技术的使用和交叉编译的使用(一种为不同的兼容平台编译软件的手段)。你还将学习对于一个没有国界的社区来说软件国际化的重要性——Linux是真正国际性的,它的用户也是如此。最后,你将通过为热门的LAMP(Linux、Apache、MySQL、Perl/Python)组合编写软件来学习Linux在现代因特网上的广泛用途。Linux所包含的内容远不Linux内核,作为一位Linux开发人员,意识到这一点是非常重要的。

只是最重要的是,本书将为未来进一步学习打下基础。通过对推动Linux开发的关键主题的深刻讨论,我们将为你打开通向自由/开放源码软件项目世界的大门。在阅读本书之后,你将能更好地明白你究竟需要了解什么,你并不会在本书中找到所有的答案,但你将具备自己发现这些答案的能力。不论你是使用Linux编写自由软件还是参与一个大型商业软件项目,你都将在阅读本书中有所收获。

==========================================================================================
给学习计算机的同僚们(初学者,进阶者,包括Linux爱好者)的学习建议

        为什么我们要学习计算机,为什么我们要学习编程,有很多很多的原因,但当我们踏进计算机的世界里的时候

,我们找到了可以任由我们发挥,任由我们施展拳脚的天地,我们有了一种对学习计算机,甚至是学好计算机的渴望,

但是任何一门学科都不是那么容易学的好的,计算机更是如此,我想我们大多数人都是从编程开始学习的,逐渐形成了

对学习编程的兴趣,但是如果想真正的学好计算机,单单学习高级语言是不能达到效果的,就算你说我只想学好一门高

级语言,把它学的精通就可以了,但问题就是那么的简单么,我想不是吧。
    
       计算机是一个整体,学习任何一门计算机课都是和其他课程联系在一起的,要学习就要有足够的深度和广度,不然不可能有深入的了解就像学习c语言一样,如果你想知道他是怎样在计算机的内存中分布的,具体是怎么运行的,就要学习汇编语言,当然计算机体系结构,计算机组成原理,是你理解计算机的基础,计算机大师 knuth都非常重视汇编语言(汇编语言和机器语言是一一对应的)

,要想学好软件,脱离硬件是不可能,因为软件最终要靠硬件来运转的。当然了如果是初学者还是要一步步学的,如果你

想知道c语言是怎么运行的,想了解指针和数组的真正区别,那多学一门语言汇编语言吧,人们都说汇编语言是与机器相关的,不能移植的,但想在的pc 机上用的几乎都是AMD,和intel的处理器,他们有都是互相兼容的,所以指令集的体系结构都是IA-32当然了现在都有64位的处理器了,但是这并没有什么很大的区别,仅仅是位数变多了,所能表达的数字变

大了,精度也变的更长了等等。就像学习高级语言一样学习汇编语言也是相通的,因为他们的功能都差不多,而且更加

简单,你会发现在高级语言中的语法会在汇编语言中消失,仅存的就只是指令的书写格式(相当如词法吧,当然了我可能也说的不太对,因为对汇编语言学的不是很深入,所以现在也正在有计划的去学习)。如果你学习的java,vb,c#等等那
么就请您多多看看c和c++吧,我们常常听说某种语言实现了垃圾回收机制,用某种算法不定期的把你程序中不再使用的内存回收掉,最好的例子就是JAVA
了(关于它的一句话说的挺好,一次编译到处运行,非常适用于嵌入式计算机程序的编写),不过你能用JAVA语言写出

内存回收的程序么
我想应该是不可能,JAVA对于这方面做了太多的限制,但在c/c++中却没有,你可以用库函数malloc等等去分配内存,

free去释放内存,
c++中对应的是(new,delete)实现的跟方便些,你也可以用系统调用brk(其实库函数也是调用了他,只不过做了一些

更加完善的工作而已)去分配,而且他可以直接去操作数据到位(&,|,~),如果说
高级语言是汇编语言的一个子集的话,那么JAVA在这方面就是C/C++的一个子集,我并没有说java不用学,不好,而

是在学习他之前
应该多去学学C/C++,(注意语法不是特别的重要,重要的是你怎么能在学完语言以后去灵活的运用他),计算机体系

结构对于你理解
软硬件非常的重要给大家推荐一本书,书名 :计算机组成与设计——硬件/软件接口  作者:David A.Patterson

John L. hennessy
出版社:机械工业出版社 ,这本书很不错,能够很好的把软硬件的关系数清楚,而且不像一些国内的体系结构教材,

看的非常的费劲
谁然讲的都是很清楚,但不能从读者的角度去考虑问题,这本书会让你看的爱不释手的,恩,对于我来说却是如此,不

适合初学c语言的
,要有一定的c语言基础。我想还有一点要和大家分享一下,就是学习计算机切忌浮躁,不要像追星族一样,看到一项

新出的技术就去
学习,新技术会不断的变的,而且很容易让你迷失方向,一定要打好基础,关于计算机基础的书一定要多看,不要死记

硬背,但你发现
你需要死记硬背去记住书中的知识的时候,那么我可以给你个建议把此书放在书架里,去看一些能够引导你一步步的从

本质上理解知识
的书,首选一些计算机科学丛书,图灵丛书(机械工业出版社,人民邮电出版社,电子工业出版社),我们学校用的是

清华大学自己出版
的计算机书籍,虽说清华大学在工科方面很不错,但是出版的计算机书籍就我个人来说真的不怎么好,相对于国外的计算机书籍来说
差的真是太远了,我很不明白为什么要用清华出的,有一本关于Linux/unix内核的书我觉得挺好的,书名是 Linux内核源代码情景分析
浙江大学出版的,我目前正在潜心学习这本书,虽然很难,但真的不错,很少有由我们自己写的关于Linux内核这方面

的好书,这本就是
不可多得的好书。说了太多关于计算机书籍的话题了,但我认为一本好的书籍真的能给我们很大的帮助
还能从中得到快乐。
 
       如果你只想学习计算机去赚钱的话,那么你大可以不必去学习很多东西,对于你也没有用处,如果你是对计算机有着非常浓厚的
兴趣的话,那么就塌下心来,一步一步去在计算机的海洋里傲游吧,真是一件美妙的事情。


现在我告诉大家自己认为的关于学习计算机的路程

(1) c语言(可以去学谭浩强写的c语言的书,如果能找到K&R C 那就更好,自己是没有找到,要想进一步去学习的话

去看 c缺陷与陷阱,c专家编程
,这两本书很经典的)

(2)c++语言(c和c++其实并不一样,可以说c++是继承了c,增加了面向对象的思想,如果能找到c++program language

c++之父写的就很好,不过自己没有找到,要想进一步去学习的话去看  effective c++
more effective c++,挺不容易懂的,因为自己要看Linux内核所以没有多少时间去看,c++沉思录(c缺陷与陷阱 的作者

与他的妻子)也非常的不错,还是没有时间去看,只看了200多页,讲的太好了,有时间自己一定会去看完的,这本书

讲的主要是教你怎么运用C++语言去写出好的文章)


算法和数据之间的结构的理解也很重要,我想如果你有了c++的学习经验学习数据结构应该不太
困难,一直以来我都不是很明白抽象的数据结构(abstract data type   ADT)的抽象是怎么回事是什么意思,之后看

了c++沉思录才恍然大悟,抽象就是把想关注事务的部分拿出来,不关心的不去考虑,就像我们人类,人有很多属性,

姓名,年龄,体重等等,当我们研究具体问题是
也许只关心人的属性的某些方面,例如姓名,年龄,那么就把它拿出来也就是术语抽象,在c/c++语言
就用用户自定义的数据类型来去定义人:
struct people{
char name[10];
int  age;
};
struct 是structure(结构)的缩写,这样理解就非常简单了么,所以c++沉思录非常的好。

(3)算法与数据结构(有很多好的书籍,大家可以去找找,反正清华出的不敢恭维)

(4)汇编语言,计算机组成原理,计算机体系结构 微机原理(我认为刚才我说 计算机组成与设计——硬件/软件接口

就很好的包含了这些内容挺不错的,当然了学习是无止境的。


之后才能开始os的学习,我认为OS是让你在学习计算机上有一个质的飞跃,因为现代的程序设计一般都是基于OS的,如

果不了解OS,那么就不可能学好程序设计,就像建造房子一样,房子要建在地上,如果你不了解当地的环境,地质,这

么怎么能建造好的房子呢(5)操作系统原理的学习,数据库原理的学习(有一本挺好的书,自己是看完了一遍,电子

工业出版社
的操作系统设计与精髓 作者 stalling 忘了具体怎么拼了,理论性很强,不过是一本好书,要理解性的看)


至于网络原理,软件工程,通信安全,鉴于尚在学习中,就不说了。

哦,还有编译原理,是一门教你怎么把语言翻译成汇编语言,机器语言的一门课,有很多很难的算法,LR算法就很不好

理解,至于要什么时候学那就在学好语言和算法的基础上去学习吧。记住千万不要赶时髦去学什么VC,BC,包括MFC之类的,他们只是开

发程序的工具而已
帮你做了一些辅助性的工作,所以好好学习语言吧!还有就是对于什么等级考试一点作用都没有,如果要是我说现在的

等级考试
只是人家赚钱的一种方式,已经变质了,我不知道为什么不跟上时代的脚步,把它们给取消了,不止是计算机等级考试

,英语等级考试也没有用,不管怎么说他都是一门纸上的考试,对于提高自己没有作用,反而会有反作用。如果你只是

为了拿一个计算机
考试的凭证,那我劝你还是止步吧,我们是为了学习计算机而学习计算机而不是为了学习计算机而去拿那个一文不值得

证,不然我真不知道你学习计算机还有什么意思。如果真的是对计算机感兴趣那就塌下心来,一步一个脚印的去探索计算机世界的奥秘,多么美好的事情呀。很多人开始学习的人都是梦想成为黑客,用几个程序去攻击别人的漏洞,但什么

是黑客,天才的程序员才能配的上,就像Linus等一样,我们的目的是去建造宏伟的建筑,而不是去炸毁他那是骇客所

做的事情,如果你认为别人的建筑有不足之处大可以指出来。这只是我个人的意见,有不足之处请指出,谢谢了!


    还有就是谈谈自己对于Linux学习的看法。学完os以后自己就觉得应该去学习os的内核了,其实当自己刚学os的时

候就特别特别特别的想去自己写一个os,看了很多东西还是一无所获,当然了这是必然的,因为自己连os有什么功能,

进程线程,进程调度,虚拟内存,进程间的通信,文件系统,系统调用与中断,都是不知所云,所以当时很是郁闷,
很是茫然,在学完os之后才对操作系统有一个感性的认识,但是还是太理论了,没有任何源代码的分析,没有任何
设计os的细节,所以自己只好去看linux源代码了,但是还有一件重要的事没有做,写源代码我要在一个环境中去写
在哪去写呢,那就是在类UNIX操作系统上(我用的是fedora 9.0的发行版,内核是2.6版的),怎样去编译源代码呢
用的是一种特殊的格式(其实这种特殊的格式就是在写make命令时,所规定的make
认识的文件)书写去告诉编译器编译的过程是什么,也就是用make命令去解释,在windows上我们所用的
几乎都是IDE(集成的开发环境,编辑器,编译器,调试器等都组装在一个程序中)的开发环境所以想,对于编译的过程一无所知,所以当初自己看linux内核书籍的时候很是不理解,为什么
每个文件目录下都会有一个Makefile文件,原来但你输入make命令的时候他会自动在当前的目录下按照makefile,
Makefile的顺序去查找是否有此文件名,然后就读取文件进行解释,并告诉gcc编译器怎样编译按照什么样的顺序编译
这些源文件。之后就是去熟悉linux操作系统,编写Linux上的c程序(unix环境高级编程第二版 是在类unix上学习的
很好的书籍,因为这些开放源代码的os都是按照POSIX(开放的操作系统接口标准)标准写的,所提供的API(通用的应用程序编程接口,就是人们把各个方面常用的函数用某种语言编写出来供程序员使用,减少了程序员的负担,增加了代码的可重用性,就像程序中通常都要与输入输出打交道,所以 Dennis Ritchie 图灵奖得主、unix
操作系统、c语言之父,就用c语言写出了标准I/O库,但我们遇到库函数的时候也就
能知道其是什么意思有什么功能,为什么呢,都是一样的嘛,就像向标准的输入输出设备读写的printf,  scanf函数,名字都是一样的,所以就有很多好处了) c编程接口都是很一致的,不同os上的扩展肯定是有的,不过大致上是差不多的,所以在这些os上编写的程序非常容易移植,有错

误估计也只会做一些小的细微的修改就可以了)自己也真在学习中,最后就是Linux内核源代码了,情景分析那本书我

觉的应该是本不错的关于linux内核方面的书了,自己也正在学习中,不过就是太艰难了,不过任何事情都不会是轻松

的,因为自己喜欢所以去做,只能坚持到底了,呵呵。

    有一句话说的好,要想了解一门学科就要先了解他的历史,在学习linux的过程中我深刻体会到了这句话的作用,
去看看那Linux的发展史吧,对你一定会有帮助的,我们不仅要知其然还要知其所以然的学习,知道linux的现状还要
知道他是怎么来的,是怎么壮大起来的,linus是linux的开创者,多么令人兴奋那,正是有了这些开放的源代码,我们
才得以去学习,多么好的事情呀!


     其实我并不太喜欢c#和VB因为他们根本就没有移植性可言,是微软为了让更多的人为自己的操作系统编写应用
程序而开发的,VS,VC就是这个环境嘛,其IDE的人性化确实不错,可却让我们忘却了什么是编辑器,什么是编译器,什么是调试器,不能组装我们自己喜欢的环境最重要的是c c++ java是不受操作系统限制的,所以又回到了前
面,学学不受os限制的语言吧,以至于不会被微软牢牢的套住,c#,VB当然可以学,但是在学之前学学这些不受操作系统限制的语言吧,

不要受那些书籍里的言语的迷糊,说其(c#, VB, VC++.net, VB.net等等)是怎么怎么的好,可是他怎么没有提及他是不可移植性的呢?!
不说了,Linux内核这样大的阿房宫还要我去游览呢,找个好的导游带我去探险吧!



学习linux续:

      自己也是从今年下半年开始了解linux的,这还要感谢的自己的OS老师,如果没有他让我们这些学生知道了linux,恐怕我现在也不知道 linux呢。之前我和大多数人一样在用windows,不管是应用还是编程,一开始总觉得还是蛮好的,可是学完了OS原理以后,总觉得缺点什么,自己当初就有想写一个OS的想法,
可是却无从下手,除了基本的语言学习外,有太多的东西需要自己去学习,因为当初自己在学习OS原理
后,没有真正的理解,进程和线程,SMP,和信号量都只是泛泛的知道而已,所以自己清楚只有在完全
明白OS的基本概念和算法以后才能进一步的去学习,于是自己用一个月的时间看完了 William Stallings写的操作系统——精髓与设计原理,感觉和自己当初看陈向群写操作系统完全不一样,虽然在理论了,可是于是自己有进一步去学习linux 内核0,11版的完全注释,可是看了几天
就看不下去了,什么也看不懂makefile是什么,gcc是什么,它是怎么编译,以前在windows下自己只知道写完程序然后由TC后VC 去编译,可是现在却完全的茫然了,通过上网和从其他书籍了解到,要想
理解linux,要先学会去用linux,只有这样才能感性的了解linux,于是自己从网上下载了red hat 的后继版本
fedora core 9.0内核是2.6版的,安完之后,进入了GNOME的桌面环境,我发现自己来到了一个新的世界
自己完全成了一个陌生人,完全不知道怎么操作,安软件原来还有这么多的方法,./configure是什么
make ,make install是什么自己当初都快崩溃了,自己想在上面看电影,可是却什么都看不了RMVB也无法播放,听说mplayer挺不错的,我就下了源码包,解码包,皮肤包,然后通过书籍和网上教的步骤一步步的去安,花了几天的时间才能完全的安上,皮肤也出现了,真是不易呀,但是全屏又有画面播放的问题于是自己下了个realplayer 11的rpm包安装到还是顺利,yum到还是用的 不太明白。这些经历以后自己就通过一本关于 GNU/Linux的书籍去了解应用linux(自己当初买这本书的时候,还有些犹豫,怎么会有GNU,这是什么呢,应为自己买书的那个书店只有这一本带 linux的,所以自己就买了,后来才知道,
GNU代表着自由软件,它是GNU ' s not Unix 的递归表示),还是有一点点感觉的,呵呵。
         大概了解了 linux后 ,自己就去看关于 linux内核的API,找到了 advanced programming in the unix environment,发现真的和其他人说的一样 ,Richard Stevens写 的 太经典了,自己到现在看了有 10章了
,还在继续学习。因为自己在学校有很多时候不能够用计算机,自己觉得现在可以去看linux内核了,
于是我就去看了,linux内核源代码情景分析 ,但自己对于硬件和计算机体系结构根本就是不了解 ,虽然 在学OS 原理时,学校也开了微机原理 和体系结构,因为体系结构是考查课,自己没有完全的重视,所以自己只能重新开始计算机体系结构的学习,用的是计算机组成原理——硬件与软件接口,也挺不错的,可以说自己通过这本书真正的了解了什么是硬件什么是软件 ,至于微机原理 ,我真的不想说什么,很重要MMU不讲,汇编的也没有真正的讲完 ,可以说我是 通过计算机组成原理——硬件与软件接口这本书,才真正的了解汇编语言虽然是MIPS的体系结构不是intel的 ,真的很不错,自己也知道了 c语言是
如何 翻译成汇编语言的 ,虽然很想去深入的去学习汇编语言,但时间太有限了,还要去应付考试,所以
只能以后去看了,真是舍不得呀!
          在看完计算机组成原理后,自己就继续看情景分析看完 存储管理 以后 ,发现自己反过来再去看这张,自己完全忘记了,我想这种方法太差了,通过不断的了解才知道还是应该看看linux内核设计与原理和深入理解linux内核,了解 linux内核是怎么设计,为什么会这样设计,我结合自己现在的情况把这两本书的关于存储管理的基本看完了,然后在去看情景分析的存储管理的源代码,发现原来自己怎么也不明白的,现在竟然一下子就明白了,这给自己增加了很大的信心,相信自己一定能够在这条道路上走下去
,现在自己正在学习中,不管是应用linux,通过linux编程,还是看linux内核,我发现我越来越喜欢linux
了, 在linux下一切都变的那么的简单,我离不开linux了

=============================================================================
linux高级程序设计 目录
http://book.51cto.com  2008-11-08 20:41  杨宗德/邓玉春/曾庆华  人民邮电出版社  我要评论(0)

    * 摘要:《linux高级程序设计》本书所有应用程序采用2.6内核为开发平台,GCC 4.0为开发环境,主要介绍Linux操作系统下C语言应用程序开发相关内容。本小节为这本书的目录部分。
    * 标签:Linux  程序设计  目录  linux高级程序设计
    *
      Oracle帮您准确洞察各个物流环节

目录

第1章 Linux下C语言开发环境 1
1.1 Linux操作系统概述 2
1.1.1 Linux操作系统简介 2
1.1.2 GNU/Linux简介 3
1.1.3 相关术语介绍 3
1.2 Linux开发初步 5
1.2.1 Linux下C程序开发标准 5
1.2.2 库函数和系统调用 7
1.2.3 在线文档介绍 9
1.2.4 获取错误信息 10
1.2.5 Linux应用程序示例 11
1.3 Linux内核及库文件管理 12
1.3.1 Linux内核目录结构 13
1.3.2 使用Linux系统库文件 14
1.3.3 创建静态库和共享库 17
1.4 Linux下编码风格 19
1.4.1 GNU编码规范 19
1.4.2 Linux内核编码规范 20
第2章 Linux下C语言开发工具 23
2.1 Linux开发的基本工具 24
2.1.1 Vim编辑器 24
2.1.2 Emacs编辑器 26
2.1.3 tar打包器 27
2.1.4 Linux编程常用命令及工具 28
2.2 GCC/G++编译器 36
2.2.1 GCC/G++简介 36
2.2.2 Glibc库 43
2.2.3 GCC不同编译选项对程序的影响 45
2.3 make工具及makefile文件 49
2.3.1 make工具简介 49
2.3.2 makefile常用规则 52
2.4 GDB调试工具 54
2.4.1 GDB调试工具简介 54
2.4.2 GDB演示示例 55
2.4.3 GDB调试器常用语法 56
2.5 GCC程序开发过程实例 58
2.6 自动编译调试工具 61
2.6.1 Autoconf/Automake工具组简介 61
第3章 内存管理及相关工具 69
3.1 内存管理基本概念 70
3.1.1 C程序内存分配 70
3.1.2 栈和堆的区别 72
3.1.3 Linux数据类型大小 73
3.1.4 数据存储区域实例 75
3.2 内存管理函数 77
3.2.1 malloc/free函数 77
3.2.2 realloc-更改已经配置的内存空间 80
3.2.3 其他内存管理函数calloc和alloca 82
3.3 常用Linux内存管理及调试工具 82
3.3.1 mcheck函数 83
3.3.2 Valgrind内存检测工具 84
第4章 ANSI C文件管理 89
4.1 文件基本概念及文件指针 90
4.1.1 文件基本概念 90
4.1.2 文件指针 91
4.2 ANSI C标准文件I/O操作 93
4.2.1 缓冲区类型 93
4.2.2 打开关闭文件 96
4.2.3 读写文件流 98
4.2.4 文件流定位 102
4.2.5 格式化输入输出函数 103
第5章 POSIX标准文件I/O管理 107
5.1 Linux系统下文件类型及属性 108
5.1.1 Linux文件模式 108
5.1.2 Linux文件类型 108
5.1.3 文件权限修饰位 111
5.1.4 文件访问权限位 112
5.1.5 文件描述符 113
5.2 POSIX标准下文件I/O管理 114
5.2.1 创建/打开/关闭文件 114
5.2.2 文件控制fcntl 117
5.2.3 lockf文件控制 121
5.2.4 锁定/解锁文件flock 122
5.2.5 读/写文件内容 124
5.2.6 文件定位 127
第6章 Linux文件管理及目录操作 129
6.1 Linux文件系统管理 130
6.1.1 Linux下VFS虚拟文件系统 130
6.1.2 ext2文件系统结构 131
6.1.3 超级块结构 131
6.1.4 dentry结构 132
6.1.5 Inode块 133
6.1.6 数据块及文件 135
6.2 Linux文件及目录管理操作 136
6.2.1 读取文件属性 136
6.2.2 修改文件权限操作 138
6.2.3 修改掩码umask 140
6.2.4 修改文件的拥有者及组 141
6.2.5 添加删除目录 142
6.2.6 连接文件管理 142
6.2.7 当前目录操作 143
第7章 Linux进程管理与程序开发 147
7.1 进程环境及进程属性 148
7.1.1 程序及进程环境 148
7.1.2 进程的基本属性 149
7.2 Linux进程控制 153
7.2.1 创建进程 153
7.2.2 运行新进程 158
7.2.3 等待进程结束 160
7.2.4 退出进程 166
7.2.5 修改进程用户相关信息 168
7.2.6 复制进程 172
7.3 Linux进程调度 173
7.3.1 进程状态 173
7.3.2 Linux常用调度算法 174
7.3.3 调度管理函数 176
第8章 进程间通信--管道和信号 183
8.1 进程通信--无名管道 184
8.1.1 无名管道概念 184
8.1.2 无名管道管理及应用 184
8.2 进程通信--有名管道FIFO 190
8.2.1 有名管道概念 190
8.2.2 有名管道管理及应用 191
8.3 信号中断处理 194
8.3.1 信号的基本概念 194
8.3.2 信号基本操作及应用 197
第9章 System V进程间通信 209
9.1 System VIPC基础 210
9.1.1 key值和ID值 210
9.1.2 拥有者及权限 211
9.2 消息队列 212
9.2.1 消息队列IPC原理 212
9.2.2 Linux消息队列管理 214
9.2.3 消息队列应用实例 217
9.3 信号量通信机制 220
9.3.1 信号量IPC原理 220
9.3.2 Linux信号量管理操作 221
9.3.3 信号量应用实例 226
9.4 共享内存 229
9.4.1 共享内存IPC原理 229
9.4.2 Linux共享内存管理 231
9.4.3 共享内存处理应用示例 233
9.4.4 共享内存处理应用示例 235
第10章 Linux多线程编程 239
10.1 Linux线程概述 240
10.1.1 线程基本概念 240
10.1.2 线程基本应用概述 240
10.1.3 进程/线程应用对比 243
10.2 Linux线程基本操作 244
10.2.1 创建线程 244
10.2.2 退出线程 245
10.2.3 等待线程 245
10.2.4 取消线程 246
10.2.5 线程基本操作应用实例 247
10.3 线程属性控制 249
10.3.1 初始化线程属性对象 250
10.3.2 获取/设置线程属性 251
10.3.3 线程属性控制实例 255
10.4 线程调度 257
10.4.1 调度策略基本概念 257
10.4.2 调度策略管理 258
10.4.3 线程调度策略示例程序 259
第11章 线程间通信机制 263
11.1 互斥锁通信机制 264
11.1.1 互斥锁基本原理 264
11.1.2 初始化或损坏互斥锁 265
11.1.3 锁定/非阻塞锁定一个互斥锁 266
11.1.4 解锁互斥锁 267
11.1.5 初始化或破坏互斥锁属性对象 267
11.1.6 互斥锁使用范围 268
11.1.7 互斥锁kind属性设置 269
11.1.8 互斥锁应用实例 269
11.2 条件变量通信机制 271
11.2.1 条件变量基本原理 271
11.2.2 初始化或损坏条件变量 273
11.2.3 取消阻塞一个或所有等待条件变量的线程 274
11.2.4 等待或定时等待条件变量 274
11.2.5 初始化或破坏条件变量属性对象 276
11.2.6 读取/设置条件变量争用范围 277
11.2.7 条件变量应用实例 277
11.3 读写锁通信机制 281
11.3.1 读写锁基本原理 281
11.3.2 初始化或损坏读写锁 282
11.3.3 解除读写锁定 283
11.3.4 锁定或非阻塞锁定用于读取的读写锁 283
11.3.5 锁定或非阻塞锁定用于写入的读写锁 284
11.3.6 初始化或破坏读写锁定属性对象 284
11.3.7 读写锁属性设置 285
11.3.8 读写锁应用实例 286
11.4 线程信号量 289
11.4.1 线程信号量基本原理 289
11.4.2 无名线程信号量管理 291
11.4.3 无名线程信号量应用实例 293
11.4.4 命名线程信号量管理 296
11.5 线程信号 299
11.5.1 线程信号管理 299
11.5.2 示例程序 300
第12章 Linux Socket网络编程 303
12.1 网络通信基础 304
12.1.1 TCP/IP协议簇基础 304
12.1.2 IPV4基础 305
12.1.3 IP数据包头 307
12.1.4 TCP数据包头 309
12.1.5 UDP数据包头 311
12.2 Socket通信基本概念及过程 312
12.2.1 Socket对象实现 312
12.2.2 面向连接的Socket通信实现 314
12.2.3 面向无连接的Sockek通信实现 320
12.3 面向连接的TCP套接字编程实例 322
12.3.1 使用AF_UNIX实现本机数据流通信 322
12.3.2 使用AF_INET实现数据流通信 325
12.4 面向无连接的UDP套接字编程实例 328
12.5 其他Socket API应用编程 331
12.5.1 socketpair实现本地进程间通信 331
12.5.2 获取/设置socket状态 333
12.5.3 获取网络主机条目 334
12.5.4 获取服务条目 338
12.5.5 获取/设置或结束协议条目 339
12.5.6 地址转换管理操作 340
12.5.7 地址操作例行程序 341
附录A GCC参数说明 343
附录B gdb命令手册 367
附录C vim参考手册 383
附录D Emacs编辑器 395
附录E CVS服务器配置 401
  评论这张
 
阅读(261)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017