关于unix高级环境编程 编译时的err_sys和err_quit错误
来源:互联网 发布:java多线程讲解 编辑:程序博客网 时间:2024/05/08 03:37
err_sys以及err_quit等函数不是C语言自带函数,是作者自己编写的函数。所以,想要运行书中的源代码,就必须自建一个头文件my_err.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. */voiderr_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. */voiderr_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. */voiderr_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. */voiderr_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. */voiderr_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. */voiderr_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 voiderr_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 */}
0 0
- 关于unix高级环境编程(apue)编译时的err_sys和err_quit错误的解决办法
- 关于unix高级环境编程 编译时的err_sys和err_quit错误
- 关于unix高级环境编程 编译时的err_sys和err_quit错误
- unix高级环境编程(apue)编译时的err_sys和err_quit错误的解决办法最终版
- unix高级环境编程(apue)编译时的err_sys和err_quit错误的解决办法最终版
- Unix环境编程中的apue.h和err_quit、err_sys问题
- err_sys (unix环境高级编程)
- 解决Unix环境高级编程示例中的 undefined reference to `err_quit'
- 解决Unix环境高级编程示例中的 undefined reference to `err_quit'
- UNIX环境高级编程的编译问题
- Unix环境高级编程第三版源码编译错误
- 【UNIX高级编程】关于UNIX编程环境的配置(apue.h和error.h)
- 关于UNIX环境高级编程第二版编译问题
- Mac下编译"Unix环境高级编程"的apue.h的错误解决
- 《unix高级环境编程》关于apue.h和源码编译问题
- UNIX环境高级编程-第0章- 关于apue.h和源码编译问题
- 《unix环境高级编程》源代码编译找不到apue.h等错误的解决办法
- 《unix环境高级编程》源代码编译找不到apue.h等错误的解决办法
- 二叉树的递归创建,以及二叉查找树查找的建立 和遍历查找的比较
- ZBar的简单使用
- iOS的音量
- Jquery ajax 返回string类型加result.d原因
- 利用MMU通过访问虚拟内存来实现流水灯
- 关于unix高级环境编程 编译时的err_sys和err_quit错误
- js和meta刷新页面
- [LeetCode] Minimum Depth of Binary Tree
- spring3 的restful API RequestMapping介绍
- leetcode之Path Sum II
- Java数组在内存中是什么样的?
- Android 控件滚动条的隐藏
- MyEclipse中web项目引用java项目
- php的strrev