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;}
评论