快3网上购买

apue是什么书_unix 环境高级编程_[精彩] (初学APUE的进来看看)《UNIX环境高级编程》单个源码编译方法

电脑杂谈  发布时间:2016-06-01 15:04:42  来源:网络整理

你是否正在寻找关于apue的内容?让我把最有用的东西奉献给你:

apue_apue是什么书_unix 环境高级编程


对于很多初学[font=Courier]《UNIX环境高级编程》(AdvancedProgrammingintheUNIXEnvironment,简称apue,以下使用简称)的朋友[/font][font=Courier],第一个遇到的问题可能就是该书中的源代码编译的问题。此书中差不多每个例程中,都会有这样一行源码:[/font]
[font=Courier]#include"ourhdr.h"[/font]


[font=Courier]在第二版中改为:[/font]
[font=Courier]#include"apue.h"[/font]

[font=Courier]这个头文件是作者把把每个例程中常用的标准头文件,一些常用的出错处理函数(err_**()之类的函数)和一些常用的宏定义给整理在一个头文件中。这个可以省去在每个例程中录入较多的重复代码,这样可以减少每个例程的长度。但是,这样就给读者带来了不少麻烦。因为我们还要去搞明白如和把这个头文件编译,然后做成库文件,添加到我们的系统中。特别读于初学者,本来满怀信心的,结果在编译第一个程序的时候就出现了问题。我也没有搞明白如何把"ourhdr.h"静态的编译到系统中。[/font]

[font=Courier]不过,不明白如何使用"ourhdr.h"这个头文件,并不会影响我们学习apue,也不会影响我们编译和运行每一个例程。其实,简单的想一下,如果一个C程序要能顺利的编译和运行,除了我们要语法正确等方面外,最根本的是要保证我们程序中所调用的函数以及宏等等都要有完整的来源,也就是必须包含所有调用函数和宏所在的头文件。对于一个具体的源程序,如果我们正确的包含了头文件,那么剩下的就是程序本生语法方面应该注意的事项。[/font]

[font=Courier]如何确定系统调用函数包含在那个头文件中呢?这在Unix/Linux系统下并非一件难事,。Unix/Linux下命令man可以帮助我们找到。man命令不仅可以帮助我们查找一般命令的用法,同时提供不同层次的帮助诸如系统调用或者管理员级别的命令等等(譬如FreeBSD6.1中,man1是用户专用手册,man2是系统调用,man3是库函数查询等等)。[/font]

[font=Courier]下面我们就以apue书中程序1-1(实现ls命令部分功能)为例,来说明如何将书中的程序改编成全部使用标准头文件的程序。其中,操作系统用的是FreeBSD6.1,经过相应的修改可以在书中所说的几个Unix系统及Linux系统中运行,我也曾在DebianLinux下成功编译和运行该程序。书中1-1.c的原始代码如下:

[table=95%][tr][td][font=FixedSys][color=#000000][color=#0000cc]#[/color][color=#ff0000]include[/color][color=#0000cc]<[/color]sys[color=#0000cc]/[/color]types[color=#0000cc].[/color]h[color=#0000cc]>[/color]
[color=#0000cc]#[/color][color=#ff0000]include[/color][color=#0000cc]<[/color]dirent[color=#0000cc].[/color]h[color=#0000cc]>[/color]
[color=#0000cc]#[/color][color=#ff0000]include[/color][color=#ff00ff]"ourhdr.h"[/color]

[color=#0000ff]int[/color]
main[color=#0000cc]([/color][color=#0000ff]int[/color]argc[color=#0000cc],[/color][color=#0000ff]char[/color][color=#0000cc]*[/color]argv[color=#0000cc][[/color][color=#0000cc]][/color][color=#0000cc])[/color]
[color=#0000cc]{[/color]
DIR[color=#0000cc]*[/color]dp[color=#0000cc];[/color]
[color=#0000ff]struct[/color]dirent[color=#0000cc]*[/color]dirp[color=#0000cc];[/color]

[color=#0000ff]if[/color][color=#0000cc]([/color]argc[color=#0000cc]![/color][color=#0000cc]=[/color]2[color=#0000cc])[/color]
err_quit[color=#0000cc]([/color][color=#ff00ff]"usage:irectory_name"[/color][color=#0000cc])[/color][color=#0000cc];[/color]

[color=#0000ff]if[/color][color=#0000cc]([/color][color=#0000cc]([/color]dp[color=#0000cc]=[/color]opendir[color=#0000cc]([/color]argv[color=#0000cc][[/color]1[color=#0000cc]][/color][color=#0000cc])[/color][color=#0000cc])[/color][color=#0000cc]=[/color][color=#0000cc]=[/color][color=#ff0000]NULL[/color][color=#0000cc])[/color]
err_sys[color=#0000cc]([/color][color=#ff00ff]"can'topen%s"[/color][color=#0000cc],[/color]argv[color=#0000cc][[/color]1[color=#0000cc]][/color][color=#0000cc])[/color][color=#0000cc];[/color]
[color=#0000ff]while[/color][color=#0000cc]([/color][color=#0000cc]([/color]dirp[color=#0000cc]=[/color]readdir[color=#0000cc]([/color]dp[color=#0000cc])[/color][color=#0000cc])[/color][color=#0000cc]![/color][color=#0000cc]=[/color][color=#ff0000]NULL[/color][color=#0000cc])[/color]
[color=#ff0000]printf[/color][color=#0000cc]([/color][color=#ff00ff]"%s\n"[/color][color=#0000cc],[/color]dirp[color=#0000cc]-[/color][color=#0000cc]>[/color]d_name[color=#0000cc])[/color][color=#0000cc];[/color]

closedir[color=#0000cc]([/color]dp[color=#0000cc])[/color][color=#0000cc];[/color]
[color=#ff0000]exit[/color][color=#0000cc]([/color]0[color=#0000cc])[/color][color=#0000cc];[/color]
[color=#0000cc]}[/color][/color][/font][/td][/tr][/table]

[/font][font=Courier][color=#000000]从书后面的附录中可以看到"ourhdr.h"的内容比较多,包含了比较多的常用头文件,一些宏定义和一些常用函数和出错函数的定义。其实,对于每一个具体的程序,我们只需要找到该程序中用到的头文件即可。

该1-1.c中所用到的系统函数调用有:opnedir(),readdir(),printf(),closedir()和exit()。
其中,对于常用的函数prinft()和exit(),它们所在的头文件一般都知道,分别是

以上就是关于apue的全部内容,相信你一定会非常满意。


本文来自电脑杂谈,转载请注明本文网址:
http://www.kadakong.com/a/shenmilingyu/article-7217-1.html

    相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    快3在线投注 幸运飞艇开奖结果pk10 状元彩票官网 快3娱乐平台 秒速赛车开奖 快3平台 99棋牌 状元彩票注册 快3娱乐平台 皇冠正版投注网