#include #include #include #include "quit.h" #include "tem/ctl.h" void quit_all(int status,void *self_p) { alres *resouce =(alres*)self_p; //转换参数 resouce->network->shutdown_pool(resouce->network); logs *netlog = (logs*)malloc(sizeof(logs)); netlog->next = NULL; memcpy(netlog->log,"shuting down networkserver",27); resouce->loger->in_log(netlog,resouce->loger); free(resouce->network); //释放网络资源 if(resouce->tem->command !=NULL){ free_history(resouce->tem); if(resouce->tem->command->arg != NULL) { args* arg = resouce->tem->command->arg; if(arg->next !=NULL) { while(arg->next != NULL){ args* tobefree = arg; arg = arg->next; free(tobefree); } free(arg); } } free(resouce->tem->command); } //释放终端资源 pthread_mutex_destroy(&resouce->loger->mtx); resouce->loger->cleanup(resouce->loger); sem_destroy(&resouce->loger->log_sem); //销毁信号量 free(resouce->loger); //清理日志 }