您的位置:首页 > 运维架构 > Linux

Linux - Unix环境高级编程(第三版) 源代码编译(即头文件apue.h如何使用问题)

2015-01-27 22:08 603 查看
1. 下载代码:http://www.apuebook.com/code3e.html

2. 安装依赖库:sudo apt-get install libbsd-dev

3. 进入下载目录make

4. 复制头文件和动态链接库

[plain] view
plaincopy





sudo cp ./include/apue.h /usr/include/

sudo cp ./lib/libapue.a /usr/local/lib/

sudo cp ./lib/libapue.a /usr/lib/

5. 设置错误文件error.h

[cpp] view
plaincopy





#include "apue.h"

#include <errno.h> /* for definition of errno */

#include <stdarg.h> /* ISO C variable aruments */

static void err_doit(int, int, const char *, va_list);

/*

* Nonfatal error related to a system call.

* Print a message and return.

*/

void err_ret(const char *fmt, ...)

{

va_list ap;

va_start(ap, fmt);

err_doit(1, errno, fmt, ap);

va_end(ap);

}

/*

* Fatal error related to a system call.

* Print a message and terminate.

*/

void err_sys(const char *fmt, ...)

{

va_list ap;

va_start(ap, fmt);

err_doit(1, errno, fmt, ap);

va_end(ap);

exit(1);

}

/*

* Fatal error unrelated to a system call.

* Error code passed as explict parameter.

* Print a message and terminate.

*/

void err_exit(int error, const char *fmt, ...)

{

va_list ap;

va_start(ap, fmt);

err_doit(1, error, fmt, ap);

va_end(ap);

exit(1);

}

/*

* Fatal error related to a system call.

* Print a message, dump core, and terminate.

*/

void err_dump(const char *fmt, ...)

{

va_list ap;

va_start(ap, fmt);

err_doit(1, errno, fmt, ap);

va_end(ap);

abort(); /* dump core and terminate */

exit(1); /* shouldn't get here */

}

/*

* Nonfatal error unrelated to a system call.

* Print a message and return.

*/

void err_msg(const char *fmt, ...)

{

va_list ap;

va_start(ap, fmt);

err_doit(0, 0, fmt, ap);

va_end(ap);

}

/*

* Fatal error unrelated to a system call.

* Print a message and terminate.

*/

void err_quit(const char *fmt, ...)

{

va_list ap;

va_start(ap, fmt);

err_doit(0, 0, fmt, ap);

va_end(ap);

exit(1);

}

/*

* Print a message and return to caller.

* Caller specifies "errnoflag".

*/

static void err_doit(int errnoflag, int error, const char *fmt, va_list ap)

{

char buf[MAXLINE];

vsnprintf(buf, MAXLINE, fmt, ap);

if (errnoflag)

snprintf(buf+strlen(buf), MAXLINE-strlen(buf), ": %s",

strerror(error));

strcat(buf, "\n");

fflush(stdout); /* in case stdout and stderr are the same */

fputs(buf, stderr);

fflush(NULL); /* flushes all stdio output streams */

}

6. 注销,重启

7. 代码文件

[cpp] view
plaincopy





#include "apue.h"

#include "error.h"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐