Как я могу создать программу ruby, которая отправляет на стандартный вывод в режиме реального времени, как копирование? - PullRequest
0 голосов
/ 01 июня 2018

У меня нет отличного способа произнести название этого вопроса.Но я думаю, что могу объяснить то, о чем я прошу, достаточно четко.

Название вопроса таково: как я могу создать программу 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» может делатьэто.

1 Ответ

0 голосов
/ 01 июня 2018

Вы можете спросить, как "очистить" стандартный вывод.Я думал, что puts будет мигать автоматически, поэтому, возможно, это не так.Попробуйте $stdout.flush.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...