libjio C语言日志、事务API开源项目

我要开发同款
匿名用户2009年03月30日
39阅读
所属分类C/C++、程序开发、常用工具包
授权协议未知

作品详情

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>#defineFILENAME"test1"#defineTEXT"Helloworld!\n"intmain(void){   intr;   structjfsfile;   structjtranstrans;   structjfsck_resultresult;   /*checkthefileisOK*/   jfsck(FILENAME,NULL,&result);   jfsck_cleanup(FILENAME,NULL);   /*andopenit*/   r=jopen(&file,FILENAME,O_RDWR|O_CREAT|O_TRUNC,0600,0);   if(r<0){      perror("jopen");      return1;   }   /*writetwo"Helloworld"snexttoeachother*/   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");      return1;   }   /*atthispointthefilehas"Helloworld!\nHelloworld!\n"*/   /*nowwerollback*/   r=jtrans_rollback(&trans);   if(r<0){      perror("jtrans_rollback");      return1;   }   /*andnowthefileisempty!*/   jtrans_free(&trans);   jclose(&file);   return0;}

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论