Similar a Getting output of system() calls in Ruby, estoy ejecutando un comando del sistema, pero en este caso necesito enviar el STDOUT desde el comando mientras se ejecuta.¿Cómo obtengo el STDOUT de una llamada al sistema ruby () mientras se está ejecutando?
9
A
Respuesta
13
Al igual que en la pregunta vinculada, la respuesta es nuevamente no usar system
, ya que system
no es compatible con esto.
Sin embargo, esta vez la solución no es usar backticks
, sino IO.popen
, que devuelve un objeto IO que puede usar para leer la entrada mientras se está generando.
+7
Gracias, Terminé usando 'IO.popen ('command_to_run ') {| io | while (line = io.gets) do pone line end} ' –
0
aquí es mi solución
def io2stream(shell, &block)
Open3.popen3(shell) do |_, stdout, stderr|
while line = stdout.gets
block.call(line)
end
while line = stderr.gets
block.call(line)
end
end
end
io2stream("ls -la", &lambda { |str| puts str })
Cuestiones relacionadas
- 1. Captura stdout y stderr de un programa externo * mientras * está ejecutando (Rubí)
- 2. ¿Cómo especifico el shell que se usará para una llamada al sistema ruby?
- 3. ¿Cómo hacer una llamada al sistema y leer el stdout, en D?
- 4. Cargando imagen gif mientras jQuery ajax se está ejecutando
- 5. Ruby: obtener el archivo que se está ejecutando
- 6. Ignorando una llamada al sistema
- 7. ¿Es seguro recompilar un ejecutable mientras se está ejecutando?
- 8. Instalación del paquete mediante la llamada al sistema CLI/Ruby
- 9. Llamada falsa del sistema en ruby
- 10. ¿Llamada al sistema sin cambio de contexto?
- 11. Editar script de shell mientras se está ejecutando
- 12. ¿Cómo puedo encontrar en qué sistema operativo se está ejecutando mi programa Ruby?
- 13. ¿Cómo obtener el sistema operativo en el que se está ejecutando PHP?
- 14. Diciendo qué proyecto de ruby on rails se está ejecutando
- 15. Notificación en Phonegap mientras la aplicación no se está ejecutando
- 16. actualización R paquetes mientras R se está ejecutando
- 17. ¿Cómo obtengo el HMODULE para el código que se está ejecutando actualmente?
- 18. ¿Cómo maneja MATLAB el cambio de archivo mientras se está ejecutando el archivo?
- 19. ¿Se puede anular un subproceso en medio de una llamada al kernel del sistema?
- 20. Restricciones mientras kernel está ejecutando una rutina ISR
- 21. Ruby IO.popen STDOUT buffering
- 22. ¿Cómo obtengo el identificador de ventana dando el nombre del proceso que se está ejecutando?
- 23. ¿Qué sucederá cuando edite un script mientras se está ejecutando?
- 24. cómo mostrar una carga modal ... mientras se está ejecutando una solicitud ajax $ .get/$.
- 25. ¿Cómo se está ejecutando el código después de una excepción?
- 26. ¿Se está ejecutando un método al cerrar el programa?
- 27. La interceptación de la salida estándar de un subproceso mientras se está ejecutando
- 28. Cómo reemplazar un JPanel con otro mientras el programa se está ejecutando
- 29. ¿Cómo se implementa la llamada al sistema en Linux?
- 30. ¿Por qué el servicio de datos WCF funciona mejor mientras se está ejecutando Fiddler?
Es curioso que lo que tenga que hacer nada especial. En mi experiencia, cuando ejecuto un programa que usa 'system', el stdout del programa secundario va al stdout del programa principal, que parece ser lo que quiere. –
Esto también puede funcionar: http://stackoverflow.com/questions/2215455/printing-to-screen-in-a-rake-task/2215986#2215986 –