comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Procesos en Ruby

  • 0 Respuestas
  • 1555 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Dharok

  • *
  • Underc0der
  • Mensajes: 111
  • Actividad:
    0%
  • Reputación 0
  • Siempre atento! Aun vivo.
    • Ver Perfil
    • Email
« en: Febrero 23, 2010, 11:23:02 pm »
Hemos visto ya como crear hilos de nuestros propios procesos en Ruby. Sin embargo, ?C?mo har?amos para crear un proceso ajeno a nuestro script? Ruby implementa una serie de clases y m?todos que pueden ser utilizados para gestionar dichos procesos. Veamos pues como hacer esto:

CREAR PROCESOS:

En Ruby para invocar un proceso, podemos utilizar system. System, lo que har?a ser?a llamar a la consola del sistema operativo en el que te encuentres y ejecutar los comandos que t? le quieras pasar. Si el comando se ha encontrado y ha sido ejecutado se mostrar? true, en caso contrario, false. Para probar esto, abrid el interprete interactivo de Ruby poniendo "irb" en vuestra consola de comandos y jugad:
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
irb(main):001:0> system('ls') #pasamos el comando ls para ver los directorios y archivos del directorio en el que nos encontramos.
Biblioteca         Programaci?n          Universidad
hilos.rb         Ruby             vN0tdoser.rb
md5.pl            ruby-pcap-0.6.tar.gz     Windows_uE_SP3_2008.1_Bj-Guanaco
nautilus-computer.desktop  rubyscript2exe-0.5.3.rb
pcap            so.rb
=> true #Nos devuelve "true".
irb(main):002:0> system('cd "Universidad"')
=> true
irb(main):003:0> system('ruby hilos.rb') # Nos ejecuta el c?digo en Ruby.
21 abierto en www.code-makers.es
21 abierto en www.google.com
21 abierto en www.youtube.com
80 abierto en www.code-makers.es
80 abierto en www.google.com
80 abierto en www.youtube.com
81 abierto en www.code-makers.es
81 abierto en www.google.com
81 abierto en www.youtube.com
=> true
irb(main):004:0> system('pedrolo') # Intentamos pasar el m?todo "pedrolo".
=> false #Nos devuelva false, ya que no existe dicho m?todo.

JUGAR CON LOS PROCESOS:

Esto est? bien para casos sencillos, en los que no se requiera mucha interacci?n con el proceso. Cabe decir adem?s que el inconveniente de usar system, es que la salida de tu comando va al mismo lugar que la salida de tu programa (es decir, que al poner por ejemplo: system('ls'), lo que vamos a obtener va a ser "true" y no el conjunto de archivos y carpetas existentes en el directorio. Adem?s, muchas veces necesitamos tener m?s control sobre estos procesos y obtener y enviar datos con el proceso, es decir, que haya un intercambio. Para esto tenemos el m?todo IO.popen. El m?todo IO.popen ejecuta un comando como un subproceso y conecta las salida y entrada est?ndar al objeto Ruby IO. Si quisiesemos leer la salida del programa podr?amos hacerlo mediante la lectura del objeto IO. Vamos a ver un ejemplo, para ello, os animo a que ejecut?is vuestra consola interactiva por medio del comando "irb":
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
irb(main):001:0> a=IO.popen('ls')
=> #<IO:0xb7c22c2c>
irb(main):002:0> a=a.read
=> "a.sh\nBiblioteca\nfirefox-3.0.3.tar.bz2\nhilos.rb\nmariposa.jpg\nmd5.pl\nMetamorfosis.odt\nMetamorfosis.rb\nnautilus-computer.desktop\nPantallazo.png\npcap\nPreMetamorfosis.odp\nprocesos.txt\nProgramaci\303\263n\nrana.jpg\nRespuestas.txt\nRuby\nruby-pcap-0.6.tar.gz\nrubyscript2exe-0.5.3.rb\nsniffer.rb\nSoluciones.rb\nso.rb\nUniversidad\nvN0tdoser.rb\nWindows_uE_SP3_2008.1_Bj-Guanaco\n"
irb(main):003:0> a=a.gsub("\n","   ")
=> "a.sh   Biblioteca   firefox-3.0.3.tar.bz2   hilos.rb   mariposa.jpg   md5.pl   Metamorfosis.odt   Metamorfosis.rb   nautilus-computer.desktop   Pantallazo.png   pcap   PreMetamorfosis.odp   procesos.txt   Programaci\303\263n   rana.jpg   Respuestas.txt   Ruby   ruby-pcap-0.6.tar.gz   rubyscript2exe-0.5.3.rb   sniffer.rb   Soluciones.rb   so.rb   Universidad   vN0tdoser.rb   Windows_uE_SP3_2008.1_Bj-Guanaco   "
sto muestra la simplicidad con la que podemos manejar procesos en Ruby a trav?s de tuber?as. Primero se abre la tuber?a, se escribe una orden y se lee la respuesta.

M?s documentaci?n sobre la clase IO:

Clase IO (No tienes permisos para ver links. Registrate o Entra con tu cuenta)

AUTOR: sh4van3
No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



[Ruby] Traductor de Decimal a Ascii / Ascii a Decimal

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1465
Último mensaje Febrero 24, 2010, 04:16:38 pm
por ANTRAX
Lenguaje Ruby, aprendiendo poco a poco.

Iniciado por Alejandro9999

Respuestas: 2
Vistas: 1449
Último mensaje Agosto 15, 2013, 02:58:39 pm
por Alejandro9999
Crafting rails 4 applications (Manual de Ruby on Rails 4)

Iniciado por Alejandro9999

Respuestas: 0
Vistas: 895
Último mensaje Marzo 01, 2014, 05:34:50 pm
por Alejandro9999
Desarrollo de aplicaciones Perl, PHP, Python y "Ruby on Rails"

Iniciado por Alejandro9999

Respuestas: 0
Vistas: 1134
Último mensaje Junio 13, 2014, 03:27:08 pm
por Alejandro9999
Shoesrb donde puedes hacerle una interfaz grafica a una aplicación hecha en Ruby

Iniciado por Alejandro9999

Respuestas: 3
Vistas: 1737
Último mensaje Mayo 21, 2013, 03:51:00 am
por D4rkC0d3r