mirror of https://github.com/Icinga/icinga2.git
Truncate the PID file before writing the new PID.
This commit is contained in:
parent
fc337a51e7
commit
9ea0cb4353
|
@ -462,9 +462,15 @@ void Application::UpdatePidFile(const String& filename)
|
|||
if (m_PidFile != NULL)
|
||||
fclose(m_PidFile);
|
||||
|
||||
#ifndef _WIN32
|
||||
char *mode = "r+";
|
||||
#else /* _WIN32 */
|
||||
char *mode = "w";
|
||||
#endif /* _WIN32 */
|
||||
|
||||
/* There's just no sane way of getting a file descriptor for a
|
||||
* C++ ofstream which is why we're using FILEs here. */
|
||||
m_PidFile = fopen(filename.CStr(), "r+");
|
||||
m_PidFile = fopen(filename.CStr(), mode);
|
||||
|
||||
if (m_PidFile == NULL)
|
||||
BOOST_THROW_EXCEPTION(runtime_error("Could not open PID file '" + filename + "'"));
|
||||
|
@ -479,6 +485,8 @@ void Application::UpdatePidFile(const String& filename)
|
|||
|
||||
_exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
(void) ftruncate(fd, 0);
|
||||
#endif /* _WIN32 */
|
||||
|
||||
fprintf(m_PidFile, "%d", Utility::GetPid());
|
||||
|
|
Loading…
Reference in New Issue