У меня нет отличного способа произнести название этого вопроса.Но я думаю, что могу объяснить то, о чем я прошу, достаточно четко.
Название вопроса таково: как я могу создать программу ruby, которая отправляет на стандартный вывод в режиме реального времени, как это делает копия?
Я объясню, что я имею в виду.
Предположим, в одной командной строке я делаю
C:\Windows\System32>md e:\exes
C:\Windows\System32>copy *.exe e:\exes >c:\carp\f.f
C:\Windows\System32>
Затем из другой командной строки я
C:\carp>type f.f
I тогдапосмотрите, как создается файл ff по мере выполнения копирования.
и после завершения копирования ff получает полный стандартный вывод
Однако с моей программой ruby это не так
Вот моя программа ruby
E:\rubylig>type putsandoutput.rb
20.times do
puts "a"
sleep 1
end
E:\rubylig>ruby putsandoutput.rb >a.a
Если я затем открою еще одно приглашение cmd и сделаю
E:\rubylog>type a.a
Файл aa будет пустым, пока не будет запущена программа putandoutput.rbк завершению.
Тогда файл aa заполнен.
Но я бы хотел, чтобы моя программа ruby, как и copy, могла перенаправлять свой вывод в файл во время работы,вместо того, чтобы ждать, пока он не завершится.
Возможно ли это сделать.Если так, то как, а если нет, то почему бы и нет?
Если нет, то я предполагаю, что это ограничение Ruby ..
Это не ограничение командной строки, так как «copy» может делатьэто.