加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

UNIX环境高级编程中的apue.h

发布时间:2016-01-13 17:38:28 所属栏目:Unix 来源:网络整理
导读:/************** * *apueerror.h * *************/#include apue.h #include stdio.h #include errno.h /* for definition of errno */ #include stdarg.h /* I
/**************  
 *  
 *apueerror.h  
 *  
 *************/
#include <apue.h>    
#include <stdio.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 */
}

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读