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   }
  • 相关阅读:
    小程序中template的用法
    小程序弹窗的几种形式
    js怎样截取以'-'分割的字符串
    js怎样截取字符串后几位以及截取字符串前几位
    局域网聊天软件项目小结(1)
    IPAddress类
    Combobox 成员添加
    tcpclient 类
    console.read()读入的内容
    技术带来的进步与退步---一点点反思
  • 原文地址:https://www.cnblogs.com/stevensfollower/p/5674825.html
Copyright © 2011-2022 走看看