优化退出流程,统一注册到on_exit(

This commit is contained in:
2025-09-29 16:07:11 +08:00
parent afe70e6d17
commit 8c52e4ba84
9 changed files with 163 additions and 41 deletions

View File

@ -83,6 +83,7 @@ int init_network(int port)
addr.sin_port = htons(port); // 端口号必须网络字节序
addr.sin_addr.s_addr = htonl(INADDR_ANY); // 0.0.0.0:本机所有网卡
bind(fd, (struct sockaddr *)&addr, sizeof(addr));
listen(fd,10);
return fd;
}
@ -126,7 +127,7 @@ int iss_work(netm *self,char *command)
void *pth_module(void *args_p)
{
args *argms = (args*)args_p;
net_args *argms = (net_args*)args_p;
pth_m *pmd = argms->pth;
log_manager *logger = argms->log;
//参数解析
@ -172,7 +173,7 @@ int start_pool(netm *self)
//为线程开辟管道
pipe(self->pool[i].fifo_fd);
//启动线程
args arg;
net_args arg;
arg.pth =&self->pool[i];
arg.log = self->logmanager;
self->pool[i].status = 1;
@ -184,8 +185,12 @@ int shutdown_pool(netm *self)
{
for(int i = 0;i<MAX_POOL;i++)
{
if(self->pool[i].status == -1)
continue;
self->pool[i].status = -1;
close(self->pool[i].fifo_fd[1]);
}
return 1;
}
int server_run(int port,int fifo_fd,netm *self)
@ -196,6 +201,7 @@ int server_run(int port,int fifo_fd,netm *self)
exit(EXIT_FAILURE);
}
struct epoll_event ev;
//设置epoll同时监听控制管道与http请求
ev.events = EPOLLIN;
ev.data.fd = fifo_fd;
epoll_ctl(epfd, EPOLL_CTL_ADD, fifo_fd, &ev);
@ -228,7 +234,6 @@ int server_run(int port,int fifo_fd,netm *self)
switch(command){
case 'q':
//退出逻辑
server_quit(self);
return 1;
break;
case 'u':

View File

@ -14,11 +14,11 @@ typedef struct pthread_module
atomic_int status;
}pth_m;
typedef struct args
typedef struct net_args
{
log_manager *log;
pth_m *pth;
}args;
}net_args;
typedef struct network_manager
{