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

📄 cleanupsem.cpp

📁 FastDb是高效的内存数据库系统
💻 CPP
字号:
/*-< CLEANUPSEM.CPP >------------------------------------------------*--------*/// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *// (Main Memory Database Management System)                          *   /\|  *//                                                                   *  /  \  *//                          Created:     05-Aug-2004  K.A. Knizhnik  * / [] \ *//                          Last update: 05-Aug-2004  K.A. Knizhnik  * GARRET *//-------------------------------------------------------------------*--------*// Unix utility to cleanup FastDB semaphores//-------------------------------------------------------------------*--------*#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>#include <sys/shm.h>#include <stdio.h>#include <stdlib.h>#include <string.h>static char* keyFileDir = "/tmp/";int getKey(char* databaseName, char* suffix) {     char fileName[1024];    strcat(strcpy(fileName, databaseName), suffix);    return ftok(fileName, '0');}void removeSemaphore(char* databaseName, char* suffix) {     int key = getKey(databaseName, suffix);    if (key >= 0) {         int id = semget(key, 0, 0);        if (id >= 0) {             semctl(id, 0, IPC_RMID, NULL);        }    }}void removeSharedMemory(char* databaseName, char* suffix) {     int key = getKey(databaseName, suffix);    if (key >= 0) {         int id = shmget(key, 0, 0);        if (id >= 0) {             shmctl(id, IPC_RMID, NULL);        }    }}        int main(int argc, char* argv[]) {     if (argc < 2) {         printf("Usage: cleanupsem DATABASE-NAME\n");        return 1;    }    char* databaseName = argv[1];        if (strchr(databaseName, '/') == NULL) {         char* fullName = new char[strlen(keyFileDir) + strlen(databaseName) + 1];        databaseName = strcat(strcpy(fullName, keyFileDir), databaseName);    }    removeSharedMemory(databaseName, ".dm");        removeSemaphore(databaseName, ".in");        removeSemaphore(databaseName, ".ws");        removeSemaphore(databaseName, ".rs");        removeSemaphore(databaseName, ".us");        removeSemaphore(databaseName, ".bce");    removeSemaphore(databaseName, ".dce");    removeSemaphore(databaseName, ".bce");        removeSemaphore(databaseName, ".cs");    removeSemaphore(databaseName, ".mcs");    printf("All semaphores are removed\n");    return 0;}

⌨️ 快捷键说明

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