Mi script de Ruby ejecuta un comando de shell y analiza el resultado del mismo. Sin embargo, parece que el comando se ejecuta primero y la salida se guarda en una matriz. Me gustaría poder acceder a las líneas de salida en tiempo real tal como se imprimen. He jugado con los hilos, pero no tengo que funcionar. ¿Alguna sugerencia?¿Puede Ruby acceder a la salida desde los comandos del shell tal como aparece?
12
A
Respuesta
21
Está buscando tubos. Aquí está un ejemplo:
# This example runs the netstat command via a pipe
# and processes the data in Ruby as it come back
pipe = IO.popen("netstat 3")
while (line = pipe.gets)
print line
print "and"
end
0
Cuando los métodos/funciones de llamada a los comandos shell del sistema/RUN, el intérprete de freza otro proceso para ejecutarlo y espera a que termine, luego le da la salida.
Incluso si usa subprocesos, lo único que logrará es no dejar que su programa se bloquee mientras se ejecuta el comando, pero aún no obtendrá el resultado hasta que se complete.
Creo que puede lograr eso con las tuberías, pero no estoy seguro de cómo.
@Marcel lo tiene.
Cuestiones relacionadas
- 1. Ejecutando un comando desde Ruby mostrando y capturando la salida
- 2. No se puede acceder a la colección desde el shell - SyntaxError: missing; before statement (shell): 1
- 3. Deshágase de newline desde comandos de shell en Ruby
- 4. ¿Puedo acceder a los comandos de shell, web o menú desde el JavaScript del editor de Kate?
- 5. Ruby no puede acceder a la variable fuera del método?
- 6. ¿Cómo acceder a la versión de una gema desde Ruby?
- 7. Redirigir la salida del shell erlang a un archivo
- 8. Ejecutando un comando de shell desde Node.js sin buffering salida
- 9. ¿Dónde aparece la salida System.Diagnostics.Debug.Write?
- 10. Ejecutando comandos de shell desde Scala REPL
- 11. Ejecutar línea de comandos y devolver la salida del comando
- 12. ¿Cómo acceder a los elementos del menú contextual del shell de Windows?
- 13. Múltiples comandos a través de Jsch Shell
- 14. Salida detallada de la secuencia de comandos shell
- 15. ¿Cómo se puede acceder a los llaveros de GNOME desde Ruby?
- 16. En una secuencia de comandos de shell: comandos echo shell como se ejecutan
- 17. Salida a línea de comandos si se inició desde la línea de comandos
- 18. Rhino: restringe los paquetes Java a los que se puede acceder desde JavaScript
- 19. Ejecutando comandos de shell desde Java
- 20. Error al acceder al shell sqlite3 desde la aplicación django
- 21. Java no puede acceder a los métodos de clase desde la instancia de clase
- 22. ¿Puedo acceder a los datos de una secuencia de comandos requerida en Ruby?
- 23. Salida de shell de tubería a svn del command?
- 24. Ejecutar una biblioteca de Ruby desde la línea de comandos
- 25. ¿Cuál es la mejor forma de ejecutar comandos de shell desde una interfaz basada en web?
- 26. Devuelve la salida del comando "sistema" en Ruby?
- 27. Salida automática del script bash shell en el error
- 28. ¿Cómo se puede acceder a RouteData desde el código subyacente?
- 29. Erlang shell desde un navegador?
- 30. Llamar a la función de ruby desde la línea de comandos
Excelente respuesta, muchas gracias! – Ciryon
La salida está realmente almacenada en el búfer hasta que se complete el comando, entonces verá la salida, si no le importa la oportunidad real. – user180574