⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 errcall.c

📁 证券交易系统
💻 C
字号:
#include       <stdio.h>#include       <varargs.h>#include       <sys/types.h>#include       <sys/ipc.h>#include       <sys/msg.h>#include       "../incl/all.h"ERRMSG  err_msg;errcall(  efile, eline, etype, fmt, va_alist )int       eline,etype;char      * efile,* fmt;{       va_list   args;       int       len;       va_start ( args );       err_msg.msgtype = TO_ERR;       err_msg.errtype = etype;       sprintf ( err_msg.errinfo, "%s(%d) : ", efile, eline );       len = strlen ( err_msg.errinfo );       vsprintf ( err_msg.errinfo + len, fmt, args );       strcat ( err_msg.errinfo, "\n" );              if ( errlog() < 0 ) {          len = strlen ( err_msg.errinfo );          sprintf ( err_msg.errinfo + len, "%s(%d) : errlog() error!\n",                    __FILE__, __LINE__ );       }       if ( errmsg() < 0 ) {          len = strlen ( err_msg.errinfo );          sprintf ( err_msg.errinfo + len, "%s(%d) : errmsg() error!\n",                    __FILE__, __LINE__ );          errstd ( err_msg.errinfo );       }       va_end ( args );       return ( 0 );}static  errstd ( errinfo )char    * errinfo;{        fprintf ( stderr, "%s", errinfo );}static       errmsg ( ){       int       len,       i;       char       * path;       static       int       shmf = 0,       msgf = 0;       static       SHM1       * shmptr;       static       int       msgid;       len = strlen ( err_msg.errinfo );       if ( ! shmf ) {              if ( ( shmptr = ( SHM1 * ) ne_get_shm ( SHMFILE,                                   SHMID1, sizeof(SHM1) ) ) == NULL ) {                     sprintf ( err_msg.errinfo + len,                        "%s(%d) : get_shm( SHMFILE,SHMID1 ) return NULL\n",                                          __FILE__, __LINE__ );                     return ( -1 );              }              shmf = 1;       }       if ( shmptr -> errmsg != '1' && shmptr -> errmsg != 1 ) {              return ( 0 );       }                     if ( ! msgf ) {              if ( ( msgid = ne_get_msg ( MSGFILE, MONITOR ) ) < 0 ) {                     sprintf ( err_msg.errinfo + len,                        "%s(%d) : get_msg( MSGFILE,MONITOR ) return %d\n",                                          __FILE__, __LINE__, msgid );                     return ( -1 );              }              msgf = 1;       }       i = msgsnd ( msgid, &err_msg, L_ERRMSG, IPC_NOWAIT );       if ( i < 0 ) {              sprintf ( err_msg.errinfo + len,                            "%s(%d) : msgsnd() error!\n",                                                 __FILE__, __LINE__ );              return ( -1 );       }       return ( 0 );}static       errlog ( ){       int       len;       char       * path;       FILE       * fp;              len = strlen ( err_msg.errinfo );       path = ( char * ) getfname ( WORKDIR, ERRFILE );       fp = fopen ( path, "a" );       if ( fp == NULL ) {              sprintf ( err_msg.errinfo + len,                            "%s(%d) : fopen(%s) error!\n",                                   __FILE__, __LINE__, path );              return ( -1 );       }       fwrite  ( err_msg.errinfo, 1, len, fp );       fclose ( fp );       return ( 0 );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -