Looking for ruby Keywords? Try Ask4Keywords

Ruby LanguageCommandes du système d'exploitation ou du shell


Introduction

Il existe plusieurs façons d’interagir avec le système d’exploitation. Depuis Ruby, vous pouvez exécuter des commandes ou des sous-processus shell / système.

Remarques

Exec:
Les fonctionnalités d'Exec sont très limitées et, une fois exécutées, elles quitteront le programme Ruby et exécuteront la commande.

La commande système:
La commande System s'exécute dans un sous-shell au lieu de remplacer le processus en cours et renvoie true ou nill. La commande système est, comme backticks, une opération de blocage dans laquelle l'application principale attend que le résultat de l'opération du système soit terminé. Ici, l'opération principale n'a jamais à se soucier de capturer une exception déclenchée par le processus enfant.

La sortie de la fonction système sera toujours vraie ou nulle selon que le script a été exécuté ou non. Par conséquent, chaque erreur lors de l'exécution du script ne sera pas transmise à notre application. L'opération principale n'a jamais à s'inquiéter de la capture d'une exception générée par le processus enfant. Dans ce cas, la sortie est nulle car le processus enfant a déclenché une exception.
C'est une opération de blocage où le programme Ruby attendra que l'opération de la commande se termine avant de continuer.
L'opération du système utilise fork pour bifurquer le processus en cours, puis exécute l'opération donnée en utilisant exec.

Les backticks (`):
Le caractère backtick est généralement situé sous la touche d'échappement sur le clavier. Backticks s'exécute dans un sous-shell au lieu de remplacer le processus en cours et renvoie le résultat de la commande.
Ici, nous pouvons obtenir la sortie de la commande mais le programme se bloquera lorsqu'une exception est générée.
S'il existe une exception dans le sous-processus, cette exception est donnée au processus principal et le processus principal peut se terminer si l'exception n'est pas gérée. C'est une opération de blocage où le programme Ruby attendra que l'opération de la commande se termine avant de continuer.
L'opération du système utilise fork pour bifurquer le processus en cours, puis exécute l'opération donnée en utilisant exec.

IO.popen:
IO.popen s'exécute dans un sous-processus. Ici, l'entrée standard de sous-processus et la sortie standard sont connectées à l'objet IO.

Popen3:
Popen3 vous permet d'accéder à l'entrée standard, à la sortie standard et à l'erreur standard.
L'entrée et la sortie standard du sous-processus seront renvoyées dans les objets IO.

$? (identique à $ CHILD_STATUS)
Peut être utilisé avec les opérations backticks, system () ou% x {} et donnera le statut de la dernière commande exécutée par le système.
Cela peut être utile pour accéder aux exitstatus et pid .

$?.exitstatus

Commandes du système d'exploitation ou du shell Exemples Liés