zoukankan      html  css  js  c++  java
  • Linux 判断进程是否已经运行的程序

     1   bool
     2   ServerProcess::isAlreadyRunning()
     3   {
     4   #ifndef __linux__
     5      WarningLog(<<"can't check if process already running on this platform (not implemented yet)");
     6      return false;
     7   #else
     8      if(mPidFile.size() == 0)
     9      {
    10         // if no PID file specified, we do not make any check
    11         return false;
    12      }
    13   
    14      pid_t running_pid;
    15      std::ifstream _pid(mPidFile.c_str(), std::ios_base::in);
    16      if(!_pid.good())
    17      {
    18         // if the file doesn't exist or can't be opened, just ignore
    19         return false;
    20      }
    21      _pid >> running_pid;
    22      _pid.close();
    23   
    24      StackLog(<< mPidFile << " contains PID " << running_pid);
    25   
    26      Data ourProc = Data("/proc/self/exe");
    27      Data otherProc = Data("/proc/") + Data(running_pid) + Data("/exe");
    28      char our_exe[513], other_exe[513];
    29      int buf_size;
    30   
    31      buf_size = readlink(ourProc.c_str(), our_exe, 512);
    32      if(buf_size < 0 || buf_size == 512)
    33      {
    34         // if readlink fails, just ignore
    35         return false;
    36      }
    37      our_exe[buf_size] = 0;
    38   
    39      buf_size = readlink(otherProc.c_str(), other_exe, 512);
    40      if(buf_size < 0 || buf_size == 512)
    41      {
    42         // if readlink fails, just ignore
    43         return false;
    44      }
    45      other_exe[buf_size] = 0;
    46   
    47      if(strcmp(our_exe, other_exe) == 0)
    48      {
    49         ErrLog(<<"already running PID: " << running_pid);
    50         return true;
    51      }
    52      return false;
    53   #endif
    54   }
  • 相关阅读:
    1036 Boys vs Girls (25 分)
    1028 人口普查 (20 分)
    1004 成绩排名 (20 分)
    4.ServletContext接口
    5 .索引
    7.jQuery 的 基本绑定事件操作
    6.jQuery 操作元素的样式css
    1.servlet简介 + 我的第一个servlet程序
    5.jQuery 的 Class操作
    4.jQuery 操作文本内容
  • 原文地址:https://www.cnblogs.com/stevensfollower/p/5674825.html
Copyright © 2011-2022 走看看