2014-03-25 50 views
0

下面的代碼在Ruby 1.9.3中工作正常,但拋出了一個Bad file descriptor異常與Ruby 2.1.1(即使close_on_exec設置爲false)。exec()用ruby拋出Errno :: EBADF 2.1.1

#!/usr/bin/env ruby 

if ARGV.empty? 
    f = open("/dev/null") 
    f.close_on_exec = false if respond_to?(:close_on_exec=) 
else 
    f = IO.for_fd(ARGV[0].to_i) 
    exit 
end 

exec "./client.rb", f.fileno.to_s 

輸出:

./client.rb:7:in `for_fd': Bad file descriptor (Errno::EBADF) 
from ./client.rb:7:in `<main>' 

有別的,除了close_on_exec,改變了我的思念?

+0

你傳遞給腳本的參數是什麼 – bjhaid

+0

文件描述符 –

回答

0

通過:close_others => false作爲選項,除了設置close_on_exec = false解決它。例如。

exec "./client.rb", f.fileno.to_s, :close_others => false 
相關問題