18 std::cout << progname <<
" is a command-line tool to operate shared memory that shm used" << std::endl << std::endl;
19 std::cout <<
"Commands:" << std::endl;
20 std::cout <<
"\t" << progname <<
" list\tlist up shared memory" << std::endl;
21 std::cout <<
"\t" << progname <<
" remove\tremove shared memory" << std::endl;
27 std::cout <<
"Usage: " << progname <<
" remove <shm_name>" << std::endl;
31 main(
int argc,
char *argv[])
36 progname = basename(argv[0]);
44 if (!strncmp(argv[1],
"list", 4))
48 else if (!strncmp(argv[1],
"remove", 6))
56 const char* format[] = {
" ",
"\t\t",
"\t",
"\t",
"\t",
" ",
" ",
" ",
"\t",
""};
60 fp = popen(
"ls -l /dev/shm/",
"r");
61 std::cout <<
"Permission Hard-link\tUser\tGroup\tSize\tTimestamp\tShared memory name" << std::endl;
64 fgets(buf,
sizeof(buf), fp);
72 fprintf(stderr,
"input stream error\n");
76 if (buf_str.find(
"shm_") == std::string::npos)
80 buf_str = regex_replace(buf_str, std::regex(
"shm_"),
"");
82 auto offset = std::string::size_type(0);
83 for (
int i = 0; i < 10; i++)
85 auto pos = buf_str.find(
" ", offset);
86 if (pos == std::string::npos) {
87 std::cout << buf_str.substr(offset);
90 std::cout << buf_str.substr(offset, pos - offset) << format[i];
103 irlab::shm::disconnectMemory(argv[2]);