Попытка понять поведение терминала, когда дело доходит до сброса цвета фона в Unix-подобных ОС (Mac, Linux).
Рассмотрим сценарий bash
#!/usr/bin/env bash
printf "\033[46m"
printf "On Cyan\n"
printf "\033[0m"
printf "Back to Normal\n"
При первом запускеВ этом сценарии все как и ожидалось. Однако, если я повторю это несколько раз, результат печати изменится. Следующая строка "Back to Normal"
представляет собой строку с голубым фоновым цветом.
Снимок экрана (терминал, Mac OS Mojave):

Вопросы:
- Почему это? Кто-нибудь может объяснить это поведение?
- Если я изменил цвет фона и распечатал строку (заканчивающуюся новой строкой) , что я могу сделать, чтобы правильно сбросить фон и избежать этого нежелательногоконечный цвет фона?
Для вашей информации, я проверил это поведение на терминале Mojave Mac OS и на терминале Ubuntu 18.04. И я проверил, используя эквивалентный скрипт Python 3. Результаты соответствуют. Я также пытался использовать fflush(stdout)
в C / C ++, но напрасно.
PS Этот вопрос связан с программой C ++, которая будет работать на Mac или Linux. Я думал, что это не имеет отношения к самому языку, поэтому я упростил его до сценария bash. Если возможно, предложите решение, которое может быть сделано на C / C ++.