C语言日志、事务API libjio

分享到:

libjio是一个C库做日志,交易为导向的I/O它提供了一个类UNIX的文件操作功能(如打开,读取和写入) ,这是装在一个交易框架,以使文件操作可以提交或回滚是必要的。这是非侵入性,原子,和线程安全的,具有快速崩溃恢复。

示例代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <libjio.h>

#define FILENAME "test1"
#define TEXT "Hello world!\n"

int main(void)
{
int r;
struct jfs file;
struct jtrans trans;
struct jfsck_result result;
/* check the file is OK */
jfsck(FILENAME, NULL, &result);
jfsck_cleanup(FILENAME, NULL);
/* and open it */
r = jopen(&file, FILENAME, O_RDWR | O_CREAT | O_TRUNC, 0600, 0);
if (r < 0) {
perror("jopen");
return 1;
}
/* write two "Hello world"s next to each other */
jtrans_init(&file, &trans);
jtrans_add(&trans, TEXT, strlen(TEXT), 0);
jtrans_add(&trans, TEXT, strlen(TEXT), strlen(TEXT));
r = jtrans_commit(&trans);
if (r < 0) {
perror("jtrans_commit");
return 1;
}
/* at this point the file has "Hello world!\nHello world!\n" */
/* now we rollback */
r = jtrans_rollback(&trans);
if (r < 0) {
perror("jtrans_rollback");
return 1;
}
/* and now the file is empty! */
jtrans_free(&trans);
jclose(&file);
return 0;
}

项目主页:http://www.open-open.com/lib/view/home/1326898446140

昵    称:
验证码:

相关文档:

  • C程序运行的背后
    一个成功的男人背后,至少有一个伟大的女人;一个不成功的男人,至少有一双手。 而一个C程序,无论成功不成功,它的背后一定有...
  • 优化的内存访问 TCMalloc
    TCMalloc (google-perftools) 是用于优化C++写的多线程应用,比glibc 2.3的malloc快。这个模块可以用来让MySQL在高并发下内存占用更加稳定。...
  • 免费的解压缩C++库和源码
    免费的解压缩C++库和源码...
  • Socket 编程 详解
    对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。TCP/IP(Transmission Control Protocol/Internet Pro...
  • acl 扩展库 acl_cpp
    acl_cpp 是基于 acl 库的 C++ 库,主要内容:acl C 库的常用功能、MIIME 解析、Memcached 客户端库、Handlersocket 客户端库、数据库连接池(支持my...
  • C++ 分析器:Embedded Profiler
    Embedded Profiler 是低开销的 C++分析器,通过编译器(GCC,MinGW的,或MSVC)自动化仪表的功能实现。分析可以自动或手动完成。自动分析生...
  • C,C++开源项目中的100个Bugs
    俄罗斯OOO Program Verification Systems公司用自己的静态源码分析产品PVS-Studio对一些知名的C/C++开源项目,诸如Apache Http Server、Chromium、Clang、CMa...
  • 开源C编译器 UCC
    ucc是一款遵从ANSI C89标准的编译器,大约15,000行C代码。目前支持x86平台上的...
  • C++界面库
    Ringsdk是CSDN上一个前辈自己写的界面库,这个界面库很轻而易举实现QQ2009的界面效果。链接见...
  • C++ 异常堆栈跟踪器:libcsdbg
    libcsdbg 是一个 C++ 异常堆栈跟踪器。当异常被抛出、捕获和处理时,libcsdbg 提供可工具来创建和处理异常堆栈的跟踪,并通过调用堆栈来...
  • 如何编写一个PHP的C扩展
    C是静态编译的,执行效率比PHP代码高很多。同样的运算代码,使用C来开发,性能会比PHP要提升数百倍。IO操作如CURL,因为耗时主要在IOWa...
  • hashmap的C语言实现
    hashmap的C语言实现...
  • C++ 并发编程指南
    传播知识,介绍 C++ 并发编程。目前国内还没有一本完整介绍 C++11 并发编程的中文书籍,希望本书可以帮助广大的 C++ 开发者学习并发编...
  • C语言实现gsoap输出数据类型到XML的方法
    C语言实现gsoap输出数据类型到XML的方法...
  • C++常用类库 fcppt
    fcppt (意思是 "Freundlich's C++ toolkit") 是一个 C++ 类库用于简化 C++ 开发,提供一些常用的工具包,意为替换 Boost 开发包。...
  • 线性算术的C++模板库:Eigen
    Eigen 是一个线性算术的C++模板库,包括:向量,矩阵,开源以及相关算法。功能强大、快速、优雅以及支持多平台,可以使用该库来方便...
  • 嵌入式开发中的C容器类 FooLib
    FooLib 是一个用c实现了常用的容器,如果rbtree,hashtable,list,vector,deque,heap,map,以及定时器,os api,应用开发框架。 实现了一个基于btree索引...
  • C++11 标准新特性:Defaulted 和 Deleted 函数
    本文将介绍 C++11 标准的两个新特性:defaulted 和 deleted 函数。对于 defaulted 函数,编译器会为其自动生成默认的函数定义体,从而获得更...
  • C++ 时间函数用法
    C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问...
  • C++命令行参数解析器 CLPP
    C++ command line parameters parser (CLPP) 是一个命令行参数解析器,使用回调函数方式。只用于和 Boost C++ 库和 ISO C++ 使用。...