Boost.Log unterstützt fork () nicht . Das ist unglaublich, aber ein Ticketkommentar beschreibt eine Umgehung:
[..] Es liegt also an den Benutzern, die Bibliothek bei fork neu zu initialisieren. Sie können pthread_atfork verwenden, um eine solche Reinitialisierung durchzuführen.
Also meine Frage: Wie genau initialisiere ich Boost.Log nach einem fork ()?
Codebeispiel sehr geschätzt.
Sie müssen sich um alle Senken kümmern und sie im pthread_atfork
-Handler im untergeordneten Prozess erneut erstellen. I.e. Die Funktionen add_console_log
oder add_file_log
geben ein boost::shared_ptr
an die Senke zurück. Setzen Sie das zurück und initialisieren Sie es
es wieder.
Achte darauf, dass fork
mehr Dinge zurücklassen kann als nur kaputt
Log-Senke. Bleiben Sie auf jeden Fall weg von Multi-Threading und fork
(Es ist ein wenig Ironie, dass Pthread-Bibliothek den Handler für Gabel bietet,
was du vermeiden willst, wenn es Threads gibt ...).