您的位置:首页 > 产品设计 > UI/UE

APUE代码注记

2013-12-19 17:49 260 查看
写这篇博文是因为之前这篇文章:/article/1805744.html

APUE在2013年出了新版(第三版),不知道里面的代码运行情况如何。所以我以下关于代码的注记,是针对APUE(第二版,2005年)的,而且主要针对使用LINUX的读者,我使用的是Ubuntu 12.04。其实只要使用的是类UNIX系统,道理基本上都是一样的,所以如果你使用的是MAC OS X,或者其它的LINUX操作系统,当你找不到其它适合你的系统的方法时,也可以参考一下我写的内容。

在看这篇博客的时候,我不是一次全部写完的,会逐步按章节更新,所以这篇东西,除非明确在最后注明“主要章节已更新完毕”,否则就还是会更新的。目前的进度是:完成到“第1章 UNIX基础知识”

本文出处地址:/article/1805733.html,如果有幸被转载,请高抬贵手注明出处

————————正文————————

第0章 事前准备

不好意思这是我自己作的一个章节,APUE中并不存在这一章……特此注明。

首先,所有的例程代码可以从www.apue.com下载,我之前下载的就是2005年那本书的代码了,哈哈。

然后,在正式运行本书的程序之前,你需要按照以下步骤,来“安装”一下运行APUE相关的代码到你的机器中(其实就是把头文件放到include默认寻找的目录中),“安装”步骤,请参见:http://www.cnblogs.com/rockics/archive/2010/12/20/1911784.html

然后,另外一个问题就是很多人会碰到的,在编写APUE代码的时候,总是无法使用err_sys,err_quit等函数(各位如果不确定,可以先试一下1-1的代码是否可以运行,可以运行则没有问题,不能运行的话,请参见接下来的蓝字部分操作,其实主要代码来自程序清单B-2,程序清单B-3):

首先去下载这两个文件:error.cerrorlog.c

直接在上面点击文件名或者去我的资源那里找到“APUE程序清单B-xxxx”就可以,不需要资源分。假设你下载的目录是“downloads”,即路径是“~/downloads”。然后把这两个文件复制到/usr/include这个目录中,具体的控制台命令是:

sudo cp ~/downloads/error.c ~/downloads/errorlog.c /usr/include


然后输入密码就复制过去了。

然后在控制台进入/usr/include这个目录,命令是:

cd /usr/include


进行过安装后,“apue.h”这个文件就已经在目录中了,这个时候打开"apue.h",在最后面一行(即#endif /* _APUE_H */)前面,加上int log_to_stderr = 1,#include "error.c"以及#incude "errorlog.c",变成下面这样:

...
int log_to_stderr = 1; //注意以后如果要调用daemonize函数,必须记得将其设置为0
#include "error.c"
#include "errorlog.c"
#endif	/* _APUE_H */


这样,就可以了。

来到这里,就应该可以开始敲原书的代码了,下面我就逐章列出每节代码可能碰到的问题。最后一个说明,直接简单地编译例程(例如程序清单1-1)的命令是:

gcc 1-1.c -o 1-1


然后执行编译出来的程序的命令是(书中的可执行文件都是a.out,是因为书上的编译是直接gcc 1-1.c,这样得到的文件不是1-1而是a.out):

./1-1


如果提示权限不够,那么这样好了:

chmod 777 1-1
./1-1


这下就真的可以开始啦……

第1章 UNIX基础知识

经过测试,第一章代码没有问题,全部照敲再编译即可运行

代码地址:https://github.com/fanfank/apue2e/tree/master/ch1

第2章 UNIX标准化及实现

第3章 文件I/O

第4章 文件和目录

第5章 标准I/O库

第6章 系统数据文件和信息

第7章 进程环境

第8章 进程控制

第9章 进程关系

第10章 信号

第11章 线程

第12章 线程控制

第13章 守护进程

第14章 高级I/O

第15章 进程间通信

第16章 网络IPC: 套接字

第17章 高级进程间通信

第18章 终端I/O

第19章 伪终端

第20章 数据库函数库

第21章 与网络打印机通信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: