Merge pull request #2571 from danielmartin/revert-2517-fix-select-blocking
Revert "Fix `IO#select` blocking."
This commit is contained in:
commit
8cba0352e0
@ -92,25 +92,17 @@ module Hbc
|
|||||||
|
|
||||||
def each_line_from(sources)
|
def each_line_from(sources)
|
||||||
loop do
|
loop do
|
||||||
selected_sources = IO.select(sources, [], [], 10)
|
readable_sources = IO.select(sources)[0]
|
||||||
|
readable_sources.delete_if(&:eof?).first(1).each do |source|
|
||||||
break if selected_sources.nil?
|
|
||||||
|
|
||||||
readable_sources = selected_sources[0].delete_if(&:eof?)
|
|
||||||
|
|
||||||
readable_sources.each do |source|
|
|
||||||
type = (source == sources[0] ? :stdout : :stderr)
|
type = (source == sources[0] ? :stdout : :stderr)
|
||||||
|
|
||||||
begin
|
begin
|
||||||
yield(type, source.readline_nonblock || "")
|
yield(type, source.readline_nonblock || "")
|
||||||
rescue IO::WaitReadable, EOFError
|
rescue IO::WaitReadable, EOFError
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
break if readable_sources.empty?
|
break if readable_sources.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
sources.each(&:close_read)
|
sources.each(&:close_read)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user