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

📄 signal.c

📁 linux下多线程的下载软件源码
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <pthread.h>#include <unistd.h>#include "Signal.h"#include "Data.h"#include "Resume.h"#include "Misc.h"extern int nthreads;extern struct thread_data *wthread;extern struct request *req;extern int bwritten;extern pthread_mutex_t bwritten_mutex;void * signal_waiter(void *arg){	int signal;	arg = NULL;	pthread_sigmask(SIG_UNBLOCK, &signal_set, NULL);		while(1) {		#ifdef SOLARIS		sigwait(&signal_set);		#else		sigwait(&signal_set, &signal);		#endif		switch(signal) {			case SIGINT:				sigint_handler();				break;			case SIGALRM:				sigalrm_handler();				break;		}	}}void sigint_handler(void){	int i;	printf("^C caught, saving download job...\n");	for (i = 0; i < nthreads; i++) {		pthread_cancel(wthread[i].tid);		wthread[i].status &= STAT_INT;		/* Interrupted download	*/	}	save_log();	exit(0);}void sigalrm_handler(void){	printf("Signal Alarm came\n");	updateProgressBar(bwritten, req->clength);	alarm(1);}

⌨️ 快捷键说明

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