Belle II Software  release-05-01-25
removerb.cc
1 //+
2 // File : removerb.cc
3 // Description : remove RingBuffer cleanly using the info in the path file
4 //
5 // Author : Ryosuke Itoh, IPNS, KEK
6 // Date : 20 - Dec - 2013
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 #include <sys/sem.h>
18 
19 #include "framework/pcore/RingBuffer.h"
20 
21 using namespace Belle2;
22 using namespace std;
23 
24 int main(int argc, char** argv)
25 {
26  if (argc < 2) {
27  printf("remove : rbufname \n");
28  exit(-1);
29  }
30  string pathname = string("/tmp/") + string(getenv("USER"))
31  + string("_RB_") + string(argv[1]);
32  FILE* fd = fopen(pathname.c_str(), "r");
33  if (fd == NULL) {
34  printf("[removerb] No such RingBuffer : %s\n", argv[1]);
35  exit(-1);
36  }
37  int shmid, semid;
38  fscanf(fd, "%d", &shmid);
39  fscanf(fd, "%d", &semid);
40  fclose(fd);
41 
42  printf("Removing shmid = %d, semid = %d\n", shmid, semid);
43  shmctl(shmid, IPC_RMID, (struct shmid_ds*) 0);
44  semctl(semid, 1, IPC_RMID);
45  printf("Removing pathfile = %s\n", pathname.c_str());
46  unlink(pathname.c_str());
47 
48  // remove id file
49  char fname[1024];
50  sscanf(fname, "/tmp/SHM%d-SEM%d-RB_%s", argv[1]);
51  unlink(fname);
52 }
53 
54 
55 
main
int main(int argc, char **argv)
Run all tests.
Definition: test_main.cc:77
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19