Skip to content
Snippets Groups Projects
Commit cc737624 authored by Vítor Galvão's avatar Vítor Galvão Committed by GitHub
Browse files

Merge pull request #2517 from reitermarkus/fix-select-blocking

Fix `IO#select` blocking.
parents 12fe8957 cc634b2d
No related branches found
No related tags found
No related merge requests found
......@@ -92,17 +92,25 @@ module Hbc
def each_line_from(sources)
loop do
readable_sources = IO.select(sources)[0]
readable_sources.delete_if(&:eof?).first(1).each do |source|
selected_sources = IO.select(sources, [], [], 10)
break if selected_sources.nil?
readable_sources = selected_sources[0].delete_if(&:eof?)
readable_sources.each do |source|
type = (source == sources[0] ? :stdout : :stderr)
begin
yield(type, source.readline_nonblock || "")
rescue IO::WaitReadable, EOFError
next
end
end
break if readable_sources.empty?
end
sources.each(&:close_read)
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment