[Ruby]调用外部程序

来源:互联网 发布:淘宝上买烟怎么搜 编辑:程序博客网 时间:2024/04/29 01:08

1、system方法system后跟要执行的系统shell的命令字符串作为参数,此方法可以让系统中的程序在一个子shell中运行。是我们通过ruby脚本引导启动系统中外部程序的常规手法。

system "cmd /c del ./hello.txt"
system "calc" 

system("d: && cd D:/opt/rails-app && ruby script/server")

2、exec方法此方法同system方法有些相似,都是接受一个字符串格式的命令,但是区别还是比较明显的,以exec方法引导执行的程序启动的新进程会覆盖当前进程,而推出脚本。比如我们编写:

exec('dir')

puts 'Can show the message?' #这行代码将永远不会被执行的

3、利用``执行命令Ruby包含了一种很有趣的执行外部程序的方式:就是通过将系统shell包含在符号``之间。这样shell在执行完毕后,如果能返回信息,则返回的信息可以被我们保存在一个变量中。比如我们想判断系统中是否运行着某个进程,然后kill掉它,就可以写:

show_p = `tasklist`

system('tskill IEXPLORE') if show_p.include? 'IEXPLORE'

在Windows XP中 tasklist命令可以得到系统的所有进程信息,我们把这条系统shell放在``中执行,然后赋值给了show_p对象,然后调用其include?方法来检测是否存在IEXPLORE进程(IE浏览器),如果有就关闭它。(代码确实很好读,是吧,像读简单的英文语句,这正是Ruby的魅力!)通过这两条语句,其实我们就可以管理系统中任何进程的执行了!

存在路径问题的情况,需要切换到需要的路径下调用。

获取当前工作路径
x = Dir.getwd
print_status( x )

切换路径至path
Dir.chdir("path")