c - 没有 fflush(stdout) 输出不打印

标签 c io stdout fflush

我不明白为什么有时需要使用 fflush() 有时不需要。

目前我的程序出现段错误,我正在使用 print 语句对其进行调试。当程序出现段错误时,stdout 不会自动刷新其缓冲区吗?

最佳答案

I don't understand why sometimes I need to use fflush() and sometimes not.

有时 stdio 缓冲区会被刷新,有时不会。例如,在打印的内容中简单地包含一个“\n”通常会刷新它(因为 stdout 在连接到终端时默认是行缓冲的)。

When a program segfaults, does stdout not flush its buffer automatically ?

Stdio 缓冲区由 exit 刷新。当信号(例如 SIGSEGV)终止进程时,不会调用 exit。在不刷新 stdio 缓冲区的情况下退出进程的另一种方法是使用特定于 Unix 的调用 _exit

关于c - 没有 fflush(stdout) 输出不打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8316261/

相关文章:

python - 重定向当前正在运行的 python 进程的 stdout

c - mbed 以太网接口(interface)不工作

c - 为什么我的 const 数组存储在堆栈而不是文本部分?

java - 如何将字符串变量插入文件路径?

java - scala 和 java io 和套接字问题

C# 导入多个 txt 文件数据变得困惑

c - 不兼容指针类型的赋值——Contiki C 程序

c - Qt 原子操作使用我的 MIPS 24k 核心中不存在的条件代码寄存器

python - 将 chia 绘图检查的输出从控制台保存到文件

powershell - 如何在执行期间将 PowerShell 的输出重定向到文件