-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfunc_err.cpp
More file actions
65 lines (59 loc) · 1007 Bytes
/
func_err.cpp
File metadata and controls
65 lines (59 loc) · 1007 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
包含错误函数:err
*/
#include"func.h"
using namespace std;
#define MAXLINE 4096
int daemon_proc;
//记录日志
void err_doit(int errnoflag, int level ,const char *fmt, va_list ap)
{
int errno_save,n;
char buf[MAXLINE+1];
errno_save = errno;
#ifdef HAVE_VSNPRINTF
vsnprintf(buf,MAXLINE, fmt , ap);
#else
vsprintf(buf,fmt,ap);
#endif
n=strlen(buf);
if(errnoflag)
snprintf(buf+n,MAXLINE-n,": %s",strerror(errno_save));
strcat(buf,"\n");
if(daemon_proc)
{
syslog(level,buf);
}
else
{
fflush(stdout);
fputs(buf,stderr);
fflush(stderr);
}
}
//系统错误
void err_sys(const char *fmt,...)
{
va_list ap;
va_start(ap,fmt);
err_doit(1,LOG_ERR,fmt,ap);
va_end(ap);
exit(1);
}
//错误退出,和上面一样
void err_quit(const char *fmt,...)
{
va_list ap;
va_start(ap,fmt);
err_doit(0,LOG_ERR, fmt,ap);
va_end(ap);
exit(1);
}
//打印信息并返回
void err_ret(const char *fmt,...)
{
va_list ap;
va_start(ap,fmt);
err_doit(1,errno,fmt,ap);
va_end(ap);
}