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 + "'"));
_exit(EXIT_FAILURE);
}
+
+ (void) ftruncate(fd, 0);
#endif /* _WIN32 */
fprintf(m_PidFile, "%d", Utility::GetPid());