Exec

Aus Wikimatic
Wechseln zu: Navigation, Suche

Exec()

Offiziell dokumentiert: Nein

Mit system.Exec lassen sich beliebige Prozesse auf der HomeMatic Zentrale starten.

ACHTUNG: Bei system.Exec handelt es sich gleichzeitig um einen der nützlichsten und einen der gefährlichsten undokumentierten HomeMatic Script Aufrufe. So kann eine falsche Verwendung schnell dazu führen, dass sich die Logikschicht (ReGaHss) der HomeMatic Zentrale aufhängt. Daher sind folgende Regeln unbedingt zu beachten:

  • die Parameter stdout und stderr sind stets anzugeben
  • Es sollte unter allen Umständen vermieden werden dass mehrere system.Exec gleichzeitig ablaufen. (Im Script vor Ausführen des system.exec() eine Systemvariable setzen, danach rücksetzen, und diese vor Ausführen des Scripts abfragen.)
  • Man sollte insgesamt "sparsam" mit system.Exec umgehen und die Aufrufe auf das notwendigste Beschränken.

Ein Weg die Probleme mit system.Exec zu umgehen ist die Nutzung der Zusatzsoftware "CUxD", damit können beliebige Prozesse ohne den Einsatz von system.Exec gestartet werden.

Parameter

  • string

die Kommandozeile des zu startenden Prozesses inklusive aller Parameter (ein bekannter Fehler erfordert u.U. Kapselung in extra Shell-Prozess wenn mehr als 8 Parameter übergeben werden sollen [[1]])

  • &string

eine Referenz auf die Standard-Ausgabe

  • &string

eine Referenz auf die Standard-Fehlerausgabe

Rückgabewert

Beispiel

dieses Beispiel zeigt die Ausgabe des Befehls "uptime" an.

 string cmdline = "/usr/bin/uptime";
 
 string stdout;
 string stderr;
 
 system.Exec(cmdline, &stdout, &stderr);
 
 Write(stdout);

Siehe auch

http://homematic-forum.de/forum/viewtopic.php?f=26&t=11181

Objekte

system