
文件操作open close write read 属于Linux系统调用/属于“文件 I/O”也叫“低级 I/O”所属层级 在操作系统无缓冲 每次调用都陷入内核频繁调用开销大。fopen fwrite fread fclose ... 属于标准C库/ 标准 I/O定义在 C 标准头文件 stdio.h 中所属层级在用户空间有缓冲内部会调用底层的 open/read/write/close 等系统调用。C库缓存的特点1.遇到\n 时会将库缓存的内容写到内核缓存中即调用了系统调用函数。2.库缓存写满时会调用系统调用函数将库缓存内容写到内核缓存中。1024。printf 也是标准 I/O本质上是对 标准输出流 stdout 的格式化写入。最终输出到/dev/tty终端设备std::endl 和 \n 都可以用于换行但它们之间有几个关键区别\n不会强制刷新输出缓冲区。std::endl会立即刷新输出流的缓冲区std::cout 的缓冲区。使用 \n 更高效因为缓冲区会在适当的时候自动刷新比如程序结束、缓冲区满、或遇到输入操作等std::endl 会强制刷新缓冲区频繁使用会导致性能下降尤其是在大量输出时。行缓存 遇到换新行\n或者写满缓存时即调用系统调用函数如fgets,gets,printf,fprintf,sprintffputs,puts,scanf无缓存 只要用户调这个函数就会将其内容写到内核中。如stderr全缓存 只有写满缓存再调用系统调用函数如fread、fwrite