⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bdb.c

📁 常用软件包,可以保存,做为日常函数调用,比较通用
💻 C
字号:
#include "bdb.h"#include <pthread.h>#define min(a, b) ((a < b)? a : b)pthread_mutex_t waitht_mutex;//////////////////////////////////////////////////////////  Berkeley DB manupilation functions//////////////////////////////////////////DB *bdbCreateOpen(char *filename) {  DB *dbp;  pthread_mutex_lock(&waitht_mutex);  if ((dbp = dbopen(filename, O_CREAT | O_RDWR, 0666, DB_BTREE, NULL)) == NULL)  {	pthread_mutex_unlock(&waitht_mutex);    return NULL;  }  pthread_mutex_unlock(&waitht_mutex);  return dbp;}int Bdb_get(DB *dbp, char *name, int name_len, char *value, int value_len) {  DBT db_key, db_data;  int err;  pthread_mutex_lock(&waitht_mutex);  db_key.data = name;  db_key.size = name_len;  if ((err = dbp->get(dbp, &db_key, &db_data, 0)))  {	pthread_mutex_unlock(&waitht_mutex);    return err;  }  else    memcpy(value, db_data.data, min(value_len, db_data.size));  pthread_mutex_unlock(&waitht_mutex);  return 0;}int Bdb_del(DB *dbp, char *name, int name_len) {  DBT db_key;  int err;  flock(dbp->fd(dbp),LOCK_SH);  pthread_mutex_lock(&waitht_mutex);  db_key.data = name;  db_key.size = name_len;  if ((err = dbp->del(dbp, &db_key, 0)))  {	pthread_mutex_unlock(&waitht_mutex);    return err;  }  pthread_mutex_unlock(&waitht_mutex);  flock(dbp->fd(dbp),LOCK_UN);  return 0;}int Bdb_put(DB *dbp, char *name, int name_len, char *value, int value_len) {  DBT db_key, db_data;  int rtn;  flock(dbp->fd(dbp),LOCK_SH);  pthread_mutex_lock(&waitht_mutex);  db_key.data = name;  db_key.size = name_len;  db_data.data = value;  db_data.size = value_len;    rtn = dbp->put(dbp, &db_key, &db_data, 0);  pthread_mutex_unlock(&waitht_mutex);  flock(dbp->fd(dbp),LOCK_UN);  return rtn;} int Bdb_close(DB *dbp) {  int rtn;  flock(dbp->fd(dbp),LOCK_SH);  pthread_mutex_lock(&waitht_mutex);  dbp->sync(dbp, 0);  rtn = dbp->close(dbp);  pthread_mutex_unlock(&waitht_mutex);  flock(dbp->fd(dbp),LOCK_UN);  return rtn;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -