Wie boost Log Bibliothek auf fork neu initialisieren?

8

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.

    
maxschlepzig 31.08.2013, 16:04
quelle

1 Antwort

1

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.

%Vor%

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 ...).

    
schroder 15.09.2015 18:39
quelle

Tags und Links