[Ruby]調用外部程式

來源:互聯網
上載者:User

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")

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.