Belle II Software development
removeshm.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#include <string>
10
11#include <stdio.h>
12#include <stdlib.h>
13#include <unistd.h>
14
15#include <sys/ipc.h>
16#include <sys/shm.h>
17
18using namespace std;
19
20int main(int argc, char** argv)
21{
22 if (argc < 2) {
23 printf("remove : shmname \n");
24 exit(-1);
25 }
26 string pathname = string("/tmp/") + string(getenv("USER"))
27 + string("_SHM_") + string(argv[1]);
28 FILE* fd = fopen(pathname.c_str(), "r");
29 if (fd == NULL) {
30 printf("[removeshm] No such RingBuffer : %s\n", argv[1]);
31 exit(-1);
32 }
33 int shmid;
34 fscanf(fd, "%d", &shmid);
35 fclose(fd);
36
37 printf("Removing shmid = %d\n", shmid);
38 shmctl(shmid, IPC_RMID, (struct shmid_ds*) 0);
39 printf("Removing pathfile = %s\n", pathname.c_str());
40 unlink(pathname.c_str());
41
42 // remove id file
43 char fname[1024];
44 sprintf(fname, "/tmp/SHM%d-SEM0-SHM_%s", shmid, argv[1]);
45 unlink(fname);
46}
47
48
49
STL namespace.