Вопрос

Я не понимаю, зачем мне нужно использовать fflush() а иногда нет.

Моя программа в настоящее время является Segfaulting, и я отлаживаю ее с печатными операторами. Когда программа сете stdout Не промыть свой буфер автоматически?

Это было полезно?

Решение

Я не понимаю, почему иногда мне нужно использовать fflush (), а иногда нет.

Иногда stdio Буферы покрасны, иногда их нет. Например, просто включение « n» в печатные вещи обычно промывает его (потому что stdout По умолчанию линейный буфер при прикреплении к терминалу).

Когда программа разыгрывает разве STDOUT не промывает свой буфер автоматически?

Буферы stdio промывают exit. Анкет Когда сигнал (например SIGSEGV) убивает процесс, exit не называется. Анкет Еще один способ выйти из процесса, не промывая stdio Буферы-это использование вызова UNIX-специфического _exit.

Другие советы

Нет, почему это должно. Программа убивается операционной системой. Если происходит сегфо, программа больше не находится в значимом состоянии, так что ничего Можно безопасно случается на тот момент, кроме немедленного прекращения.

(И не пытайтесь зарегистрировать обработчик сигнала для SIGSEGV.)

«Я не могу понять, почему Fflush (Stdout) вызывается здесь в этом коде, я пытаюсь прокомментировать эту строку, и поведение было точно таким же».

Потому что вы не гарантируете, что предыдущий вывод printf (), если этот вывод не заканчивается в новой линии.

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

Видеть этот сайт.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top