Create a new log files after pid has changed
author <shinichiro.hamaji@gmail.com> <>
Mon, 5 Sep 2011 07:56:21 +0000 (07:56 +0000)
committer <shinichiro.hamaji@gmail.com> <>
Mon, 5 Sep 2011 07:56:21 +0000 (07:56 +0000)
http://code.google.com/p/google-glog/issues/detail?id=51
http://code.google.com/p/google-glog/issues/detail?id=74
http://code.google.com/p/google-glog/issues/detail?id=82

git-svn-id: https://google-glog.googlecode.com/svn/trunk@94 eb4d4688-79bd-11dd-afb4-1d65580434c0

src/logging.cc
src/utilities.cc
src/utilities.h

index 868898f..ec0ff5b 100644 (file)
@@ -745,7 +745,8 @@ void LogFileObject::Write(bool force_flush,
     return;
   }
 
-  if (static_cast<int>(file_length_ >> 20) >= MaxLogSize()) {
+  if (static_cast<int>(file_length_ >> 20) >= MaxLogSize() ||
+      PidHasChanged()) {
     if (file_ != NULL) fclose(file_);
     file_ = NULL;
     file_length_ = bytes_since_flush_ = 0;
index 7e47690..6df20a4 100644 (file)
@@ -221,6 +221,15 @@ int32 GetMainThreadPid() {
   return g_main_thread_pid;
 }
 
+bool PidHasChanged() {
+  int32 pid = getpid();
+  if (g_main_thread_pid == pid) {
+    return false;
+  }
+  g_main_thread_pid = pid;
+  return true;
+}
+
 pid_t GetTID() {
   // On Linux and FreeBSD, we try to use gettid().
 #if defined OS_LINUX || defined OS_FREEBSD || defined OS_MACOSX
index ee54f94..af9d0d4 100644 (file)
@@ -159,6 +159,7 @@ typedef double WallTime;
 WallTime WallTime_Now();
 
 int32 GetMainThreadPid();
+bool PidHasChanged();
 
 pid_t GetTID();