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

📄 lockfile.c

📁 用c++包装好的线程库,直接拿来使用,提高效率.
💻 C
字号:
//// Implementation of lock for files//#include "LockFile.h"extern void Log(int, char *, ...);extern void Fatal(char *, ...);#define _(t)        tLockFile::LockFile(){  isLocked = false;  name = "";}LockFile::~LockFile(){  UnLock();}bool LockFile::Lock(const char *fname){  FILE *fp;  const char *dn;  int n;  struct stat sbuf;  Log(LOG_NOTICE, _("Locking file %s"), fname);  dn = fname;  if (dn = strrchr(fname, '/'))    dn++;  name = LOCK_DIR;  name += "/LCK..";  name += dn;  isLocked = false;  if (stat(name.c_str(), &sbuf) != -1) {    Log(LOG_WARNING, _("UUCP Lock file exists"));    if ((fp = fopen(name.c_str(), "r")) != NULL) {      fscanf(fp, "%10d\n", &n);      fclose(fp);      if (n == getpid())	return true;      Log(LOG_ERR, _("Device %s locked by process %d"), dn, n);    }    return isLocked;  }  Log(LOG_DEBUG, _("Creating uucp lock %s"), name.c_str());  if ((fp = fopen(name.c_str(), "w")) == NULL)    Fatal(_("Creating lock file %s"), name.c_str());  fprintf(fp, "%10d\n", getpid());  fclose(fp);  return isLocked = true;}void LockFile::UnLock(){  Log(LOG_NOTICE, _("Unlocking %s"), name.c_str());  if (isLocked) unlink(name.c_str());}

⌨️ 快捷键说明

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