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

📄 msignal.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
字号:
#include "version.h"#include <signal.h>#include <errno.h>#include <unistd.h>#include <stdio.h>#include "buf.h"#include "net.h"#include "char.h"#include "item.h"#include "object.h"#include "configfile.h"#include "lssproto_serv.h"#include "saacproto_cli.h"#include "log.h"#include "petmail.h"/*------------------------------------------------------------ *  卅仄 ------------------------------------------------------------*/static void endlsprotocol( void ){    lssproto_CleanupServer();    saacproto_CleanupClient();}/*------------------------------------------------------------ * 允屯化及忡绣仄卅仃木壬卅日卅中犯□正毛母件皿允月楮醒 *  卅仄 ------------------------------------------------------------*/static void allDataDump( void ){  closeAllLogFile();	storeCharaData();}/*------------------------------------------------------------ *  卅仄 ------------------------------------------------------------*/void shutdownProgram( void ){    printf("关闭SAAC连接:%d\n",close( acfd ));    printf("关闭绑定端口:%d\n",close( bindedfd ));    memEnd();}#ifdef _GMSV_DEBUGchar *DebugMainFunction = NULL;extern time_t initTime;#endifextern int player_online;extern int player_maxonline;char saacfunc[255]="";void sigshutdown( int number ){		if( number == 0 ){			print( "\nGMSV正常关闭\n" );		}else{			print( "\n=========以下是服务器出错原因=========\n");	    print( "标准信息: %d\n" , number  );#ifdef _GMSV_DEBUG			print( "主 函 数: %s\n", DebugMainFunction );#endif			print( "在线人数: %d\n", player_online);			print( "最高在线: %d\n", player_maxonline);			print( "SAAC函数: %s\n", saacfunc);#ifdef _GMSV_DEBUG	    {	    	time_t new_t;	    	int dd,hh,mm,ss;	    	char buf[128];	    	time(&new_t);	    	if(initTime==0){	    		print( "运行时间: 尚未初始化完\n" );	    	}else{		    	new_t-=initTime;								dd=(int) new_t / 86400; new_t=new_t % 86400;		   		hh=(int) new_t / 3600;  new_t=new_t % 3600;		      mm=(int) new_t / 60;    new_t=new_t % 60;		      ss=(int) new_t;		      					if (dd>0) {		      	snprintf( buf, sizeof( buf ) , "服务器共运行了 %d 日 %d 小时 %d 分 %d 秒。",dd,hh,mm,ss);		      } else if (hh>0) {		      	snprintf( buf, sizeof( buf ) , "服务器共运行了 %d 小时 %d 分 %d 秒。",hh,mm,ss);		      } else {		       	snprintf( buf, sizeof( buf ) , "服务器共运行了 %d 分 %d 秒。",mm,ss);		      }		      print( "运行时间: %s\n", buf );	    	}			}#endif			print( "=========以上是服务器出错原因=========\n");		}		remove( "gmsvlog.err2");		rename( "gmsvlog.err1", "gmsvlog.err2" );		rename( "gmsvlog.err", "gmsvlog.err1" );		rename( "gmsvlog", "gmsvlog.err" );    allDataDump();    signal( SIGINT , SIG_IGN );    signal( SIGQUIT, SIG_IGN );    signal( SIGKILL, SIG_IGN );    signal( SIGSEGV, SIG_IGN );    signal( SIGPIPE, SIG_IGN );    signal( SIGTERM, SIG_IGN );    shutdownProgram();    exit(number);}void signalset( void ){    // CoolFish: Test Signal 2001/10/26    print("\n开始获取信号..\n");		print("SIGINT:%d\n", SIGINT);		print("SIGQUIT:%d\n", SIGQUIT);		print("SIGKILL:%d\n", SIGKILL);		print("SIGSEGV:%d\n", SIGSEGV);		print("SIGPIPE:%d\n", SIGPIPE);		print("SIGTERM:%d\n", SIGTERM);        signal( SIGINT , sigshutdown );    signal( SIGQUIT, sigshutdown );    signal( SIGKILL, sigshutdown );    signal( SIGSEGV, sigshutdown );    signal( SIGPIPE, SIG_IGN );    signal( SIGTERM, sigshutdown );}

⌨️ 快捷键说明

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