news 2026/6/6 8:52:13

Linux系统调用与C库I/O的底层奥秘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux系统调用与C库I/O的底层奥秘

文件操作

  • 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,sprintf,fputs,puts,scanf

  • 无缓存 只要用户调这个函数,就会将其内容写到内核中。如:stderr

  • 全缓存 只有写满缓存再调用系统调用函数,如:fread、fwrite

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 8:50:00

小程序毕设选题推荐:基于springboot+微信小程序的丽江市旅游分享平台基于微信小程序的旅游攻略分享互动平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/6 8:34:55

计算机毕业设计之基于Android的智能健康管理系统的设计与实现

为解决传统健康管理方式中信息获取零散、用户难以系统掌握自身健康状况及高效反馈健康诉求的不足&#xff0c;助力大众提升健康管理效率&#xff0c;本研究运用 Android 开发技术&#xff0c;采用 Java 编程语言&#xff0c;以 MySQL 作为数据库&#xff0c;开发设计了基于 And…

作者头像 李华
网站建设 2026/6/6 8:30:01

计算机小程序毕设实战-基于Android的智慧旅游平台设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华