Looking for ruby Keywords? Try Ask4Keywords

Ruby LanguageBetriebssystem- oder Shellbefehle


Einführung

Es gibt viele Möglichkeiten, mit dem Betriebssystem zu interagieren. In Ruby können Sie Shell- / Systembefehle oder Unterprozesse ausführen.

Bemerkungen

Exec:
Die Funktionalität von Exec ist sehr eingeschränkt, und wenn es ausgeführt wird, wird das Ruby-Programm beendet und der Befehl ausgeführt.

Der Systembefehl:
Der Systembefehl wird in einer Subshell ausgeführt, anstatt den aktuellen Prozess zu ersetzen, und gibt true oder nill zurück. Der Systembefehl ist wie Backticks eine Blockierungsoperation, bei der die Hauptanwendung wartet, bis das Ergebnis der Systemoperation abgeschlossen ist. Hier muss sich der Hauptvorgang nie darum kümmern, eine vom untergeordneten Prozess ausgelöste Ausnahme zu erfassen.

Die Ausgabe der Systemfunktion ist immer wahr oder null, je nachdem, ob das Skript fehlerfrei ausgeführt wurde. Daher wird jeder Fehler beim Ausführen des Skripts nicht an unsere Anwendung weitergeleitet. Die Hauptoperation muss sich nie darum kümmern, eine vom untergeordneten Prozess ausgelöste Ausnahme zu erfassen. In diesem Fall ist die Ausgabe gleich Null, da der untergeordnete Prozess eine Ausnahme ausgelöst hat.
Dies ist eine Blockierungsoperation, bei der das Ruby-Programm wartet, bis die Operation des Befehls abgeschlossen ist, bevor es fortfährt.
Die Systemoperation verwendet Fork, um den aktuellen Prozess zu verzweigen und dann die angegebene Operation mit exec auszuführen.

Die Backticks (`):
Das Backtick-Zeichen befindet sich normalerweise unter der Escape-Taste auf der Tastatur. Backticks wird in einer Sub-Shell ausgeführt, anstatt den aktuellen Prozess zu ersetzen, und gibt das Ergebnis des Befehls zurück.
Hier können wir die Ausgabe des Befehls erhalten, aber das Programm stürzt ab, wenn eine Ausnahme generiert wird.
Wenn im Unterprozess eine Ausnahme vorhanden ist, wird diese Ausnahme an den Hauptprozess übergeben, und der Hauptprozess wird möglicherweise beendet, wenn die Ausnahme nicht behandelt wird. Dies ist eine Blockierungsoperation, bei der das Ruby-Programm wartet, bis die Operation des Befehls abgeschlossen ist, bevor es fortfährt.
Die Systemoperation verwendet Fork, um den aktuellen Prozess zu verzweigen und dann die angegebene Operation mit exec auszuführen.

IO.popen:
IO.popen wird in einem Unterprozess ausgeführt. Hier werden der Subprozess Standard Input und Standard Output mit dem IO-Objekt verbunden.

Popen3:
Mit Popen3 können Sie auf die Standardeingabe, Standardausgabe und Standardfehler zugreifen.
Die Standardeingabe und -ausgabe des Unterprozesses wird in IO-Objekte zurückgegeben.

$? (wie $ CHILD_STATUS)
Kann mit den Backticks, system () oder% x {} verwendet werden und gibt den Status des zuletzt ausgeführten Befehls an.
Dies kann nützlich sein, um auf den exitstatus und die pid Eigenschaften zuzugreifen.

$?.exitstatus

Betriebssystem- oder Shellbefehle Verwandte Beispiele