-
- 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未定义错误解决方法
最新推荐文章于 2023-04-15 09:12:44 发布