Looking for ruby Answers? Try Ask4KnowledgeBase
Looking for ruby Keywords? Try Ask4Keywords

Ruby LanguageSistema operativo o comandos de shell


Introducción

Hay muchas formas de interactuar con el sistema operativo. Desde dentro de Ruby puede ejecutar comandos / sub-procesos de shell / sistema.

Observaciones

Exec:
Exec tiene una funcionalidad muy limitada y, cuando se ejecute, saldrá del programa Ruby y ejecutará el comando.

El Comando del Sistema:
El comando del sistema se ejecuta en un sub-shell en lugar de reemplazar el proceso actual y devuelve true o nill. El comando del sistema es, como backticks, una operación de bloqueo donde la aplicación principal espera hasta que se complete el resultado de la operación del sistema. Aquí, la operación principal nunca debe preocuparse por capturar una excepción generada desde el proceso hijo.

La salida de la función del sistema siempre será verdadera o nula dependiendo de si el script se ha ejecutado o no sin error. Por lo tanto, todos los errores al ejecutar el script no se pasarán a nuestra aplicación. La operación principal nunca debe preocuparse por capturar una excepción provocada por el proceso secundario. En este caso, la salida es nula porque el proceso hijo generó una excepción.
Esta es una operación de bloqueo en la que el programa Ruby esperará hasta que finalice la operación del comando antes de continuar.
La operación del sistema usa la bifurcación para bifurcar el proceso actual y luego ejecuta la operación dada usando exec.

Los backticks (`):
El carácter de comilla invertida generalmente se encuentra debajo de la tecla Escape del teclado. Backticks se ejecuta en un sub-shell en lugar de reemplazar el proceso actual y devuelve el resultado del comando.
Aquí podemos obtener la salida del comando, pero el programa se bloqueará cuando se genere una excepción.
Si hay una excepción en el subproceso, esa excepción se otorga al proceso principal y el proceso principal podría terminar si no se maneja la excepción. Esta es una operación de bloqueo en la que el programa Ruby esperará hasta que finalice la operación del comando antes de continuar.
La operación del sistema usa la bifurcación para bifurcar el proceso actual y luego ejecuta la operación dada usando exec.

IO.popen:
IO.popen se ejecuta en un subproceso. Aquí, la entrada estándar del subproceso y la salida estándar se conectan al objeto IO.

Popen3:
Popen3 le permite acceder a la entrada estándar, la salida estándar y el error estándar.
La entrada y salida estándar del subproceso se devolverán a los objetos de E / S.

PS (igual que $ CHILD_STATUS)
Se puede usar con las operaciones backticks, system () o% x {} y dará el estado del último comando ejecutado del sistema.
Esto podría ser útil para acceder a las exitstatus y pid .

$?.exitstatus

Sistema operativo o comandos de shell Ejemplos relacionados