mirror of
https://github.com/nsacyber/HIRS.git
synced 2024-12-25 15:41:12 +00:00
c4bc52bd42
[#52] Make TPM2 Provisioner check for a running Resource Manager
58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
/**
|
|
* Copyright (C) 2017-2018, U.S. Government
|
|
*/
|
|
#ifndef HIRS_PROVISIONERTPM2_INCLUDE_PROCESS_H_
|
|
#define HIRS_PROVISIONERTPM2_INCLUDE_PROCESS_H_
|
|
|
|
#include "Logger.h"
|
|
|
|
#include <string>
|
|
#include <iostream>
|
|
|
|
namespace hirs {
|
|
namespace utils {
|
|
|
|
/**
|
|
* The Process class represents a Linux process, its return value,
|
|
* and the standard output stream.
|
|
*/
|
|
class Process {
|
|
private:
|
|
static const hirs::log::Logger LOGGER;
|
|
|
|
static const char* const kPgrepCommand;
|
|
static const int kMaxStatFileProcessNameLength;
|
|
|
|
std::string executable;
|
|
|
|
std::string arguments;
|
|
|
|
std::string output;
|
|
|
|
public:
|
|
explicit Process(const std::string& executable,
|
|
const std::string& arguments = "");
|
|
|
|
int run();
|
|
|
|
int run(std::ostream& osForErrorLogging);
|
|
|
|
std::string getOutputString() const;
|
|
|
|
static std::string run(const std::string& executable,
|
|
std::string sourceFileName,
|
|
int sourceLineNumber,
|
|
const std::string& arguments = "");
|
|
|
|
static bool isRunning(const std::string& executable);
|
|
};
|
|
|
|
} // namespace utils
|
|
} // namespace hirs
|
|
|
|
|
|
#define RUN_PROCESS_OR_THROW(executable, arguments)\
|
|
hirs::utils::Process::run(executable, __FILE__, __LINE__, arguments)
|
|
|
|
#endif // HIRS_PROVISIONERTPM2_INCLUDE_PROCESS_H_
|