我是靠谱客的博主 整齐画笔,最近开发中收集的这篇文章主要介绍关于unix高级环境编程(apue)编译时的err_sys和err_quit错误的解决办法,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
这些天看unix高级环境编程收获颇多。但在编译书中的源文件时总出现错误。err_sys和err_quit not exist。现在终于找到了解决办法。所以把办法写在这里也给看此书的朋友一些帮助。
其实在附录B中W. Richard Stevens, Stephen A. Rago已经实现了这些函数,
把这些实现了的函数写成了头文件,再编译程序时只要包含该头文件就不会出现编译错误的情况了。
apueerror.h http://dl2.csdn.net/down4/20070816/16170243222.h
/--------------------------------------------------------------------------/#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, " ");
fflush(stdout); /* in case stdout and stderr are the same */
fputs(buf, stderr);
fflush(NULL); /* flushes all stdio output streams */
}
最后
以上就是整齐画笔为你收集整理的关于unix高级环境编程(apue)编译时的err_sys和err_quit错误的解决办法的全部内容,希望文章能够帮你解决关于unix高级环境编程(apue)编译时的err_sys和err_quit错误的解决办法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复