- 打印到终端会如何影响内存使用?它是否会一直占用内存,直到内存耗尽?
- 在docker容器中呢?
- 操作系统如何处理终端输出的内存?
- 操作系统是否在特定时间点刷新终端?
printf
来打印到终端时,标准库将使用行缓冲并等待换行符才写入输出。大小取决于实现(可能为8K)。参见:In C, what's the size of stdout buffer? 但是这种内存使用不会随时间增长。write
系统调用写入时,缓冲区将通过pipe
和pty
进行复制,最终进入终端仿真器,然后在屏幕上显示。除了终端仿真器的scrollback
缓冲区之外,它不会在此路径上积累任何内容。printf
,将结果缓冲区发送到终端仿真器进程,通过内核进行通信。