2012-08-01 56 views
0

我正在讀一本書「Working with Unix Processes」,它使用ruby來解釋unix/linux進程。這是我第一次使用ruby。我嘗試了一個例子來獲取進程的資源限制。Ruby IRB - 不能做Process.getrlimit

irb(main):001:0> Process.getrlimit(:CORE) 
Errno::EINVAL: Invalid argument - getrlimit 
    from (irb):1:in `getrlimit' 
    from (irb):1 
    from :0 


irb(main):004:0> Process.getrlimit() 
ArgumentError: wrong number of arguments (0 for 1) 
    from (irb):4:in `getrlimit' 
    from (irb):4 
    from :0 

但我似乎無法得到「getrlimit」承認(雖然它說我有錯誤的參數數目,如果我不提供任何參數)。在Google或SO上沒有發現任何內容。試過:NOFILE,:CORE等。有什麼我需要包括/要求getrlimit工作。環境:

Ubuntu 11.04 32 bit. Kernel 3.0.0-14 
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux] 
irb 0.9.5(05/04/13) 

問候

回答

0

對不起..沒關係。看來IRB運行的是之前版本的紅寶石(1.8.7),它以某種方式不支持getrlimit(儘管根據谷歌上的所有帳戶,它應該已經工作)。我已將紅寶石升級到1.9.1,但沒有將/ usr/bin/irb中的鏈接更新到/usr/bin/irb1.9.1。所以IRB還在運行Ruby 1.8.7。將irb的軟鏈接更新到v1.9.1後,getrlimit正在運行。

+0

安裝多個Ruby版本時,請考慮使用版本管理器,如RVM(http://rvm.io)或rbenv(https://github.com/sstephenson/rbenv/)。不建議更改系統的本機安裝。 – Amir 2012-08-01 05:09:10

+0

對於Ruby 1.8,正確的語法是'Process.getrlimit(Process :: RLIMIT_CORE)'。 – Casper 2012-08-01 05:26:59

+0

您應該將答案標記爲已接受的答案。 – 2012-08-01 10:53:18