From 541de0de788f8be2e38b29270d93aaf28d6fa34e Mon Sep 17 00:00:00 2001 From: Gerd von Egidy Date: Sun, 18 May 2014 18:04:34 +0200 Subject: [PATCH] Add Process::GetPID and make it work on Unix and Windows. Refs #6118 --- lib/base/application.cpp | 4 ++-- lib/base/process.cpp | 11 +++++++---- lib/base/process.h | 3 ++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/base/application.cpp b/lib/base/application.cpp index 9de7f7d4d..09f544622 100644 --- a/lib/base/application.cpp +++ b/lib/base/application.cpp @@ -314,8 +314,8 @@ pid_t Application::StartReloadProcess(void) Process::Ptr process = make_shared(Process::PrepareCommand(args)); process->SetTimeout(300); process->Run(&ReloadProcessCallback); - - return process->GetHandle(); + + return process->GetPID(); } /** diff --git a/lib/base/process.cpp b/lib/base/process.cpp index 548d3ad69..d6366324d 100644 --- a/lib/base/process.cpp +++ b/lib/base/process.cpp @@ -410,9 +410,10 @@ void Process::Run(const boost::function& callback) m_Process = pi.hProcess; m_FD = outReadPipe; + m_PID = pi.dwProcessId; Log(LogInformation, "base", "Running command '" + m_Arguments + - "': PID " + Convert::ToString(pi.dwProcessId)); + "': PID " + Convert::ToString(m_PID)); #else /* _WIN32 */ int fds[2]; @@ -514,8 +515,10 @@ void Process::Run(const boost::function& callback) // parent process + m_PID = m_Process; + Log(LogInformation, "base", "Running command '" + boost::algorithm::join(m_Arguments, " ") + - "': PID " + Convert::ToString(m_Process)); + "': PID " + Convert::ToString(m_PID)); m_Arguments.clear(); @@ -636,9 +639,9 @@ bool Process::DoEvents(void) return false; } -Process::ProcessHandle Process::GetHandle(void) const +pid_t Process::GetPID(void) const { - return m_Process; + return m_PID; } diff --git a/lib/base/process.h b/lib/base/process.h index eb73e6c5c..bd3e5ad80 100644 --- a/lib/base/process.h +++ b/lib/base/process.h @@ -73,7 +73,7 @@ public: void Run(const boost::function& callback = boost::function()); - ProcessHandle GetHandle(void) const; + pid_t GetPID(void) const; static Arguments PrepareCommand(const Value& command); @@ -87,6 +87,7 @@ private: double m_Timeout; ProcessHandle m_Process; + pid_t m_PID; ConsoleHandle m_FD; std::ostringstream m_OutputStream;