-
-
err_sys以及err_quit等函数不是C语言自带函数,是作者自己编写的函数。所以,想要运行书中的源代码,就必须自建一个头文件my_err.h把作者的代码拷贝进去,然后在程序中加载,可以和apue.h放在一个路径下,然后在代码中加上#include "error.h"。
- 下面是error.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 */
- }
-
err_sys以及err_quit等函数不是C语言自带函数,是作者自己编写的函数。所以,想要运行书中的源代码,就必须自建一个头文件my_err.h把作者的代码拷贝进去,然后在程序中加载,可以和apue.h放在一个路径下,然后在代码中加上#include "error.h"。
关于err_sys未定义错误解决方法
最新推荐文章于 2024-10-19 11:01:57 发布
本文介绍了一组用于C语言程序中的错误处理函数,包括err_ret、err_sys、err_exit等。这些函数能够帮助开发者更方便地处理系统调用时产生的错误,并提供了不同的错误处理方式。

378

被折叠的 条评论
为什么被折叠?



