FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Markus_F am 01 Juni 2022, 07:23:42

Titel: Wartet PRESENCE shell auf die Rückgabe, oder läuft die Abfrage im Hintergrund ?
Beitrag von: Markus_F am 01 Juni 2022, 07:23:42
Hallo Team,
wir ist bewusst, dass fhem ein single thread Prozess ist ... bin mir nicht sicher wie PRESENCE implementiert ist:
Wenn ich ein shell Script definiert hat, wartet dann fhem solange (an der Stelle) bis sich das Script beendet ?
Sprich, wenn das Script länger brauch, würde dann fhem an der Stelle "hängen" ?
Vielen Dank.
Titel: Antw:Wartet PRESENCE shell auf die Rückgabe, oder läuft die Abfrage im Hintergrund ?
Beitrag von: Beta-User am 01 Juni 2022, 09:15:11
Ausweislich der commandref wird der Rückgabewert des scripts verwendet:
ZitatThe shell must return 0 (absent) or 1 (present) on console (STDOUT). Any other values will be treated as an error
Wie soll das anders gehen wie mit einer blockierenden Methode?
(Klar, man könnte das insgesamt anders mit einer asynchronen Logik lösen, aber so ist es nicht implementiert).
Titel: Antw:Wartet PRESENCE shell auf die Rückgabe, oder läuft die Abfrage im Hintergrund ?
Beitrag von: justme1968 am 01 Juni 2022, 09:36:18
presence verwendet für alle varianten nicht blockierende aufrufe und blockiert fhem nicht.
Titel: Antw:Wartet PRESENCE shell auf die Rückgabe, oder läuft die Abfrage im Hintergrund ?
Beitrag von: Beta-User am 01 Juni 2022, 09:50:14
Zitat von: justme1968 am 01 Juni 2022, 09:36:18
presence verwendet für alle varianten nicht blockierende aufrufe und blockiert fhem nicht.
Danke für die Klarstellung, stimmt natürlich!

Das Problem dabei ist allerdings, dass die ganzen PRESENCE-Funktionsaufrufe (nicht nur für shellscripts) mit BlockingCall gelöst sind, also - je nach Zahl der PRESENCE-Instanzen - uU. eine ganze Anzahl an forks zusammenkommt (was ein "beliebtes" Bausteinchen für Speicherprobleme ist).