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

📄 resume.c

📁 linux下多线程的下载软件源码
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <errno.h>#include "Data.h"#include "Resume.h"#include "Misc.h"extern struct thread_data *wthread;extern struct request *req;extern int nthreads;extern int bwritten;void save_log(){	char *logfile;	struct hist_data h;	FILE *fp;	logfile = (char *)calloc(255, sizeof(char));	if (strlen(req[0].lfile) == 0)		snprintf(logfile, 255, "aget-%s.log", req[0].file);	else		snprintf(logfile, 255, "aget-%s.log", req[0].lfile);	if ((fp = fopen(logfile, "w")) == NULL) {		fprintf(stderr, "cannot open log file %s for writing: %s\n", logfile, strerror(errno));		exit(1);	}		memcpy(&(h.req), req, sizeof(struct request));	memcpy(&(h.wthread), wthread, sizeof(struct thread_data) * nthreads);	h.nthreads = nthreads;	h.bwritten = bwritten;		printf("--> Logfile is: %s, so far %d bytes have been transferred\n", logfile, h.bwritten);	fwrite(&h, sizeof(struct hist_data), 1, fp);	fclose(fp);	free(logfile);}int read_log(struct hist_data *h){	char *logfile;	FILE *fp;	logfile = (char *)calloc(255, sizeof(char));	if (strlen(req[0].lfile) == 0)		snprintf(logfile, 255, "aget-%s.log", req[0].file);	else		snprintf(logfile, 255, "aget-%s.log", req[0].lfile);	Log("Attempting to read log file %s for resuming download job...", logfile);	if ((fp = fopen(logfile, "r")) == NULL) {		if (errno == ENOENT) {			Log("Couldn't find log file for this download, starting a clean job...");			return -1;		} else {			fprintf(stderr, "cannot open log file %s for reading: %s\n", logfile, strerror(errno));			exit(1);		}	}	fread(h, sizeof(struct hist_data), 1, fp);	bwritten = h->bwritten;	fclose(fp);	Log("%d bytes already transferred", bwritten);	/* Unlinking logfile after we've read it	*/	if ((unlink(logfile)) == -1) 		fprintf(stderr, "read_log: cannot remove stale log file %s: %s\n", logfile, strerror(errno));			free(logfile);	return 0;}

⌨️ 快捷键说明

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