text: #ifndef MUDUO_BASE_PROCESSINFO_H
  #define MUDUO_BASE_PROCESSINFO_H
  
  #include "muduo-c11/base/Types.h"
  #include "muduo-c11/base/Timestamp.h"
  #include "muduo-c11/base/StringPiece.h"
  #include <vector>
  
  namespace muduo {
  
      namespace ProcessInfo {
  
          pid_t pid();
          string pidString();
          uid_t uid();
          string username();
          uid_t euid();
          Timestamp startTime();
          int clockTicksPerSecond();
          int pageSize();
          bool isDebugBuild();  // constexpr
  
          string hostname();
          string procname();
          StringPiece procname(const string& stat);
  
          /// read /proc/self/status
          string procStatus();
  
          /// read /proc/self/stat
          string procStat();
  
          /// read /proc/self/task/tid/stat
          string threadStat();
  
          /// readlink /proc/self/exe
          string exePath();
  
          int openedFiles();
          int maxOpenFiles();
  
          struct CpuTime
          {
              double userSeconds;
              double systemSeconds;
  
              CpuTime() : userSeconds(0.0), systemSeconds(0.0) { }
  
              double total() const { return userSeconds + systemSeconds; }
          };
          CpuTime cpuTime();
  
          int numThreads();
          std::vector<pid_t> threads();
  
      } // namespace ProcessInfo
  
  } // namespace muduo
  
  #endif // MUDUO_BASE_PROCESSINFO_H