Вывод, не печатая без fflush (stdout)
Вопрос
Я не понимаю, зачем мне нужно использовать fflush()
а иногда нет.
Моя программа в настоящее время является Segfaulting, и я отлаживаю ее с печатными операторами. Когда программа сете stdout
Не промыть свой буфер автоматически?
Решение
Я не понимаю, почему иногда мне нужно использовать fflush (), а иногда нет.
Иногда stdio
Буферы покрасны, иногда их нет. Например, просто включение « n» в печатные вещи обычно промывает его (потому что stdout
По умолчанию линейный буфер при прикреплении к терминалу).
Когда программа разыгрывает разве STDOUT не промывает свой буфер автоматически?
Буферы stdio промывают exit
. Анкет Когда сигнал (например SIGSEGV
) убивает процесс, exit
не называется. Анкет Еще один способ выйти из процесса, не промывая stdio
Буферы-это использование вызова UNIX-специфического _exit
.
Другие советы
Нет, почему это должно. Программа убивается операционной системой. Если происходит сегфо, программа больше не находится в значимом состоянии, так что ничего Можно безопасно случается на тот момент, кроме немедленного прекращения.
(И не пытайтесь зарегистрировать обработчик сигнала для SIGSEGV
.)
«Я не могу понять, почему Fflush (Stdout) вызывается здесь в этом коде, я пытаюсь прокомментировать эту строку, и поведение было точно таким же».
Потому что вы не гарантируете, что предыдущий вывод printf (), если этот вывод не заканчивается в новой линии.
По сути, вам нужно, только если вы отображаете, скажем, подсказка без новой линии, и вы хотите убедиться, что пользователь может его увидеть.
Видеть этот сайт.