linux程序员指南.pdf

linux程序员指南.pdf

ID:5337584

大小:3.65 MB

页数:101页

时间:2017-12-08

linux程序员指南.pdf_第1页
linux程序员指南.pdf_第2页
linux程序员指南.pdf_第3页
linux程序员指南.pdf_第4页
linux程序员指南.pdf_第5页
资源描述:

《linux程序员指南.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、下载第1章Linux操作系统1991年3月,LinusBenedictTorvalds为他的AT386计算机买了一个多任务操作系统:Minix。他使用这个操作系统来开发自己的多任务系统,并称之为Linux。1991年9月,他向Internet网上的其他一些Minix用户发电子邮件,发布了第一个系统原型,这样就揭开了Linux工程的序幕。从那时起,有许多程序员都开始支持Linux。他们增加设备驱动程序,开发应用程序,他们的目标是符合POSIX标准。现在的Linux功能已经非常强大了,但是Linux更吸引人的地方在于,它是免费的(当然并

2、不像免费啤酒那样,不是完全免费)。现在人们正在把Linux移植到其他平台上。下载第2章Linux内核Linux的基础就是它的内核。用户可以替换某个库,或者将所有库都进行替换,但是只要Linux内核存在,它就还是Linux。内核包括设备驱动程序、内核管理、进程管理以及通信管理。内核高手总是遵循POSIX规则,该规则有时会使编程变得简单,有时会使它变得比较复杂。如果用户的程序在一个新的Linux内核版本上行为发生了变化,可能是因为实现了一个新的POSIX规则。如果读者想了解更多的关于Linux内核编程的信息,可以阅读《LinuxKern

3、elHacker’sGuide》。下载第3章Linuxlibc包Libc:ISO8859.1;位于中;包括YP函数、加密函数、一些基本的影子过程(默认情况不包含),⋯⋯在libcompt中有一些为了保持兼容性而提供的老过程(默认情况下不激活);提供英文、法文,或者德文的错误信息;在libcurses中有一些具有bsd4.4lite兼容性的屏幕处理过程;在libbsd中有一些bsd兼容的过程;在libtermcap中有一些屏幕处理过程;在libdbm中有用于数据库管理的过程;在libm中有数学过程;在cr

4、tO.o???中有执行程序的入口,在libieee???有一些字节信息(请别再笑话我了,能不能给我提供一些信息?),在libgmon中是用户空间的配置信息。我希望由某位Linuxlibc开发人员来编写本章。现在我能说的唯一的一句话是a.out可执行格式将会变化成elf(可执行并可链接)格式(出版者注:这个变化已经发生了),而后者又意味着在创建共享库方面的一个变化。当前这两种格式(a.out和elf)都支持。Linuxlibc包的绝大部分都是遵守库GNU公共许可证的,尽管有些文件是遵守特殊的版权规定的,例如crtO.o。对商业版本来说

5、,这就意味着一个限制,即禁止静态链接可执行程序。在这里动态链接可执行程序又是一个特殊的例外。FSF(自由软件基金会)的RichardStallman说过:在我看来,我们应该明确地允许发行不带伴随库的动态链接可执行程序,只要组成该可执行程序的对象文件按照第5节的规定是不受限制的。⋯⋯,所以我决定现在就允许这样做。实际上,要更新LGPL将需要等到我有时间的时候,并且需要检查一下新版本。下载第4章系统调用系统调用是向操作系统(内核)所作出的一次申请,请求操作系统做一次硬件/系统相关的操作,或者是作一次只有系统才能做的操作。以Linux1.

6、2为例,它总共定义了140个系统调用。有些系统调用(如close())是在Linuxlibc中实现的。这种实现常常需要调用一个宏,而该宏最后会调用syscall()。传送给syscall()的参数是系统调用的编号,在编号后面的参数是其他一些必需的变元。如果通过实现一个新的libc库而更新了,则真正的系统调用编号可以在中找到。如果新的系统调用在libc中还没有代理程序,用户可以使用syscall()。下面给出一个例子,可以像下面一样使用syscall()来关闭一个文件(不提

7、倡):在i386体系结构下,除了系统调用编号以外,系统调用只能带5个以下的变元,这是由于受到了硬件寄存器数目的限制。如果读者是在另一个体系结构下运行Linux的,可以检查一下中的_syscall宏,看看硬件支持多少个变元,或者说开发人员选择支持多少个变元。这些_syscall可以用于取代syscall(),但是并不提倡用户这么做,这是因为由这些宏扩展而成的完整的函数有可能在库中早已存在了。所以,只有内核高手才能去使用_syscall宏。为了说明这一点,下面给出一个使用_syscall宏的close()的例

8、子:在_syscall1宏扩展以后,得到函数close()。这样,我们就有两个close()了,一个在libc中,另一个在我们的程序中。如果系统调用失败,syscall()或者_syscall宏的返回值是-1;而如果系统调用成功,则返

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。