Почему некоторые процессы запускаются из командной строки на моей Windows машине, блокируют / буферизируют весь свой вывод, если он перенаправлен, а другие нет?
Пример: tracert
не блокирует / буферизует вывод, как он записан. Если выполнить:
tracert ponyoverflow.com > output.txt
... файл output.txt
со временем увеличивается. Это полностью, как я ожидал бы, что вещи будут вести себя.
Но я пытаюсь работать с программным продуктом потенциального поставщика ( iSpring SDK , если вам нужно знать), и он, похоже, буферизует весь вывод до завершения процесса. Что меня смущает, так это то, что когда это программное обеспечение запускается из командной строки, вывод происходит по частям, строка за строкой, как и ожидалось.
Почему существует разница в поведении между вызовом с перенаправлением вывода и без него?
Следите за различными вопросами:
- Является ли это распространенным и / или стандартным в мире программирования командной строки Windows?
- Могу ли я что-нибудь сделать, чтобы схватить
- Как мне точно, на языке программиста Windows, сообщить людям iSpring, как, по моему мнению, их программное обеспечение должно вести себя в командной строке?
Я не уверен, насколько это важно, но все мои эксперименты происходят на 64-битной машине Windows 7 Home Premium.