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   }
  • 相关阅读:
    poj 1579(动态规划初探之记忆化搜索)
    hdu 1133(卡特兰数变形)
    CodeForces 625A Guest From the Past
    CodeForces 625D Finals in arithmetic
    CDOJ 1268 Open the lightings
    HDU 4008 Parent and son
    HDU 4044 GeoDefense
    HDU 4169 UVALive 5741 Wealthy Family
    HDU 3452 Bonsai
    HDU 3586 Information Disturbing
  • 原文地址:https://www.cnblogs.com/stevensfollower/p/5674825.html
Copyright © 2011-2022 走看看