Autor Thema: Blocking.pm - Benutzen von POSIX::_exit(0) um den Fork zu beenden  (Gelesen 2047 mal)

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3695
Hallo Rudi,

ich wurde von Johannes auf einen Fehler aufmerksam gemacht der Auftritt, wenn man PRESENCE und DbLog zusammen verwendet. Dabei schmiert immer beim beenden eines Forks die MySQL-Verbindung ab, da auch hier wieder die File-Deskriptoren gelöscht werden.

Dies liegt am exit(0) Befehl mit dem der Fork ja auch beendet werden soll. Dabei werden aber eben auch die FileDeskriptoren auf Unix-Systemen geschlossen.

Laut http://perldoc.perl.org/perlfork.html wird daher hier der Aufruf von POSIX::_exit(0) empfohlen um das schließen von solchen Verbindungen zu verhindern.

Ich würde daher vorschlagen in Blocking.pm die Zeile 112 in folgendes zu ändern.


POSIX::_exit(0);


Ich habe dies erfolgreich unter Linux und auf der FritzBox getestet. Für Windows hat dies keine Relevantnis.

Währe toll, wenn du das einchecken könntest.

Vielen Dank

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25603
Aw: Blocking.pm - Benutzen von POSIX::_exit(0) um den Fork zu beenden
« Antwort #1 am: 24 Februar 2013, 15:55:36 »
Eingecheckt

 

decade-submarginal