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

📄 sigint.cpp

📁 最经典的bittorrent协议的实现的源码
💻 CPP
字号:
#ifndef WINDOWS#include <sys/types.h>#include <signal.h>#include "btcontent.h"#include "tracker.h"#include "peerlist.h"#include "btconfig.h"#include "console.h"#include "sigint.h"RETSIGTYPE sig_catch(int sig_no){  if(SIGINT == sig_no || SIGTERM == sig_no){    Tracker.ClearRestart();    Tracker.SetStoped();    signal(sig_no,sig_catch2);  }}static RETSIGTYPE sig_catch2(int sig_no){  if(SIGINT == sig_no || SIGTERM == sig_no){    if( cfg_cache_size ) BTCONTENT.FlushCache();    BTCONTENT.SaveBitfield();    WORLD.CloseAll();    signal(sig_no,SIG_DFL);    raise(sig_no);  }}// Handler for other signalsRETSIGTYPE signals(int sig_no){  return CONSOLE.Signal(sig_no);}#endifvoid sig_setup(){#ifndef WINDOWS  signal(SIGPIPE,SIG_IGN);  signal(SIGINT,sig_catch);  signal(SIGTERM,sig_catch);  // Don't let printf restart a write after SIGTTOU, we will hard-loop!  struct sigaction handler;    handler.sa_handler = signals;    sigemptyset(&(handler.sa_mask));    handler.sa_flags = 0;   // SA_RESTART is not set  sigaction(SIGTTOU, &handler, (struct sigaction *)0);  // Likewise with input after SIGTTIN  sigaction(SIGTTIN, &handler, (struct sigaction *)0);  signal(SIGCONT,signals);  signal(SIGTSTP,signals);#endif}

⌨️ 快捷键说明

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