LIB-ZC 是一个Linux平台通用C扩展库
开源, 仓库地址 https://gitee.com/linuxmail/lib-zc
- 通用配置, 通用命令行参数, 通用日志
- 链表/容器, 链表/数据结构, 链表/宏, RBTREE/数据结构, 词典, MAP, VECTOR, ARGV, 不定长字符串
- BASE64/QUOTED-PRINTABLE/HEX/NCR, URL
- 字符集转码, 字符集探测
- 常见的IO函数, 超时IO函数, TCP SOCKET, DNS/IP地址/MAC地址
- 字符串函数, 时间函数, 文件操作函数
- OPENSSL函数, 线程安全,异步SSL,支持SNI
- IO流(STREAM),支持SSL
- master/server服务管理框架, server包括异步IO模式和协程模式
- 异步IO开发框架, 包括 TRIGER, 异步IO, 缓存读写, 定时器, 支持SSL
- 协程开发框架, 支持文件类(read, lseek, link等)操作协程化,支持锁和条件
- IO管道(代理)库, 协程风格和异步IO风格
- JSON 解析库, NCR 解析
- MIME 邮件解析库, TNEF 邮件解析库, BASE64/QUOTED-PRINTABLE
- REDIS 客户端(支持集群), MEMCACHE 客户端
- httpd服务器库, httpd服务开发通用模版, URL编解码
- 一个全新的CONST DB库
- 多关键字搜索
- SQLITE3 代理服务器/客户端
- 类 REDIS 服务器端
- 一种简单的序列号
在Linux平台, 仅基于GNU C标准库, 开发一个全新的完整的邮件系统, 包括
- 高并发smtp/imap4/pop3服务器
- 高并发http服务器(webmail, 管理)
- 反垃圾邮件网关, 基于贝叶斯的垃圾邮件识别系统
- 邮件解析, json, redis
- 服务进程管理器
- 希望全部程序静态编译
- 等等
为此开发了 LIB-ZC 作为基础库
- 函数, 结构体, 变量, 宏等 以字母 z 或 Z 开始
- 结构体以 _t 结尾
- "local:domain_socket_somepath", 等价于, "domain_socket_somepath"
- "fifo:somepath"
- "domain_socket_somepath"
- "somedomain:port"
- 如无特别说明, 所有的时间单位都是秒
- 如果是毫秒, 函数名或形参会明确提示
- 实参取值-1则表示无限长
- 和(网络)io相关的函数, 如果返回值类型是int, 如果返回 < 0, 表示出错
make 即可
得到: libzc.a(基础库) 和 libzc_coroutine.a(协程库)
源码 sample/下有大量例子(make sample),可供参考
zc.h 和 libzc.a 在源码目录下
$ cat a.c
#include "zc.h"
int main(int argc, char **argv)
{
/* foo(); */
return 0;
}
$ gcc a.c ./libzc.a