모든 싱크대를 처리하고 어린이 처리기 pthread_atfork
처리기 에서 재생성해야합니다. 나는. add_console_log
또는 add_file_log
함수는 boost::shared_ptr
을 싱크대로 반환합니다. 다시 설정하고 초기화하십시오. fork
그냥 로그 싱크 깨진 것보다 더 뒤에 일을 떠날 수
...
boost::shared_ptr<
sinks::synchronous_sink<sinks::text_ostream_backend>
> console_sink = logging::add_console_log();
...
void fork_child_handler(void)
{
console_sink = logging::add_console_log();
return;
}
// in some global setup code of your application
pthread_atfork(NULL /*prepare*/,
NULL /* parent */,
&fork_child_handler);
관한주의 사항. 멀리에서 멀티 스레드 및 fork
모든 수단으로 (스레드가있는 경우 피하기 위해 싶습니다 포크에 대한 처리기를 제공하는 pthread 라이브러리, 일부는 아이러니 항상 의미 ...).
해결책을 찾았습니까? 감사. – marathon
@ marathon, 불행히도, 아니, 나는하지 않았다. – maxschlepzig