У меня есть этот oprint
скрипт:Использование `sleep` делает трубы, чтобы не работать
#!/usr/bin/env ruby
amount = 100
index = 0
loop do
index += 1
if index % 5 == 0
amount += 10
end
sleep 0.1
$stdout.puts amount
end
Если я бегу oprint | echo
, то я не вижу ничего. Если я прокомментирую sleep 0.1
внутри oprint
, то я вижу много выходных данных. Делает ли sleep
разрыв трубы? Есть ли исправление?
Получите идею отсюда - https://www.ruby-forum.com/topic/152548? –
Добавьте '$ stdout.flush' после' $ stdout.puts', чтобы решить эту проблему. Любопытно узнать почему. –
На моей ОС (mac os x, zsh) ваша программа с комментариями 'sleep' заполняет трубку и заканчивается исключением' Broken pipe '- (Errno :: EPIPE) '. ИМО это ожидаемое поведение –
Grych