Linux BT下载(10)-出错处理模块和运行日志模块设计
来源:互联网 发布:体育视频直播软件 编辑:程序博客网 时间:2024/05/17 23:14
出错处理模块和运行日志模块设计
出错处理模块
该模块由bterror.h和bterror.c文件构成,主要定义了一些错误类型,以及发生导致程序终止的致命性错误时程序的响应。
以下是bterror,h的内容:
//bterror.h#ifndef BTERROR_H#define BTERROR_H#define FILE_FD_ERR-1 // 无效的文件描述符#define FILE_READ_ERR-2 // 读文件失败#define FILE_WRITE_ERR-3 // 写文件失败#define INVALID_METAFILE_ERR-4 // 无效的种子文件#define INVALID_SOCKET_ERR-5 // 无效的套接字#define INVALID_TRACKER_URL_ERR-6 // 无效的Tracker URL#define INVALID_TRACKER_REPLY_ERR-7 // 无效的Tracker回应#define INVALID_HASH_ERR-8 // 无效的hash值#define INVALID_MESSAGE_ERR-9 // 无效的消息#define INVALID_PARAMETER_ERR-10 // 无效的函数参数#define FAILED_ALLOCATE_MEM_ERR-11 // 申请动态内存失败#define NO_BUFFER_ERR-12// 没有足够的缓冲区#define READ_SOCKET_ERR-13 // 读套接字失败#define WRITE_SOCKET_ERR-14 // 写套接字失败#define RECEIVE_EXIT_SIGNAL_ERR-15 // 接收到退出程序的信号// 用于提示致命性的错误,程序将终止void btexit(int errno,char *file,int line);#endif
以下是bterror.c文件:
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include "bterror.h"void btexit(int errno,char *file,int line){printf("exit at %s : %d with error number : %d\n",file, line, errno);exit(errno);}
运行日志模块
该模块由log.h和log.c组成,负责记录运行的日志,而日志是用来查询和分析程序行为。
以下是log.h文件:
//log.h#ifndef LOG_H#define LOG_H#include <stdarg.h>//用于记录程序的文件void logcmd(char *fmt,...);//打开日志文件int init_logfile(char *filename);//将程序运行日志记录到文件int logfile(char *file, int line, char *msg);#endif以下是log.c文件:
//log.c#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <sys/stat.h>#include <sys/types.h>#include <fcntl.h>#include "log.h"//日志文件的描述符int logfile_fd = -1;/**功能:在命令行上打印一条日志*传入参数:fmt ...*传出参数:*返回值:*/void logcmd(char *fmt,...){va_list ap;va_start(ap, fmt);vprintf(fmt, ap); //标准化输出va_end(ap);}/**功能:打开记录日志的文件*传入参数:filename*传出参数:*返回值:*0 打开成功*-1 未打开*/int init_logfile(char *filename){logfile_fd = open(filename,O_RDWR|O_CREAT|O_APPEND,0666);if(logfile_fd < 0) {printf("open logfile failed\n");return -1;}return 0;}/**功能:将一条日志写入日志文件*传入参数:file line msg*传出参数:*返回值:*0 成功*/int logfile(char *file,int line,char *msg){char buff[256];if(logfile_fd < 0) return -1;snprintf(buff,256,"%s:%d %s\n",file,line,msg);write(logfile_fd,buff,strlen(buff));return 0;}程序说明:函数logcmd是一个变长参数的函数(参考printf函数),也就是函数的参数个数是可变的。语句“logcmd("%s:%d error\n", __FILE__,__LINE__);”的功能与“printf("%s:%d error\n", __FILE__, __LINE__);”功能相同。
0 0
- Linux BT下载(10)-出错处理模块和运行日志模块设计
- Linux BT下载(12)-消息处理模块
- Linux BT下载(11)-信号处理模块和Peer管理模块
- Linux BT下载(13)-缓存管理模块设计与实现
- Linux BT下载(9)-位图管理模块的设计和实现
- Linux BT下载(14)-策略管理模块的设计和实现
- Linux BT下载(15)-连接Tracker模块的设计和实现
- Linux BT下载(16)-与peer交换数据模块的设计和实现
- 运行日志模块的设计和实现
- Linux BT下载(7)-种子解析模块设计与实现1
- Linux BT下载(8)-种子解析模块设计与实现2
- 日志模块设计
- BT下载软件开发笔记——种子解析模块的设计与实现
- 利用线程运行栈StackTraceElement设计Android日志模块
- 利用线程运行栈StackTraceElement设计Android日志模块
- 利用线程运行栈StackTraceElement设计Android日志模块
- 利用线程运行栈StackTraceElement设计Android日志模块
- Linux平台下基于BitTorrent应用层协议的下载软件开发--出错处理模块(bterror.c)
- OpenCV在win10+visualstudio2015环境下的配置
- Java实现算法导论中求解模线性方程解(基于最大公约数欧几里得扩展算法)
- Python学习之Django(1)
- Spring AOP工作机制进一步理解(中篇)
- 学习资料
- Linux BT下载(10)-出错处理模块和运行日志模块设计
- JavaEE网上商城项目(涉及Structs2+Spring+Hibernate+jQuery)
- 16.11.28
- 设计模式学习笔记--享元模式
- [产品经理]产品经理和项目经理的职责
- 链表中倒数第k个结点
- window.returnValue使用方法
- Linux ARM C语言中调用汇编函数
- Java基础知识