LINUX.ORG.RU

Ruby nonblock pipe проблеммы.


0

0

пример

prog = IO.popen("shell", IO::NONBLOCK | IO::RDWR)

prog.sync=true

loop do

str = prog.gets

printf "Shell: "

prog.puts str

end

Проблемма в том, что чтение останавливается на prog.gets, в случае если sheel ничего не выводит. Как сделать, что бы при prog.gets, если в канале ничего нет, блокировки не происходило?

Бьюсь уже кучу времяни но никак сделать не получается.

★★

Как-то так:

require 'io/nonblock'

prog = IO.popen("bash", IO::RDWR) 

loop do 
        loop do 
                begin
                        prog.nonblock {
                                str = prog.sysread(128)
                                STDOUT.write str
                        }
                rescue Errno::EAGAIN => e
                        break
                end
        end

        printf "Shell: " 
        prog.puts gets
end

anonymous
()
Ответ на: комментарий от anonymous

Спасибо тебе о добрый и заботливый ананимус, ты меня просто спас!

ASM ★★
() автор топика
Ответ на: комментарий от anonymous

>Проблемма в том, что руби говно.

Еще один неосиливший дотнетчик в IE без спеллчекера?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.