printf或任何输出函数实际上是做什么的?

拉胡尔·博伊瓦尼(Rahul Bhojwani)

我想知道所有这些输出函数,基本上它们是做什么的?因为我已经经历了很多次,所以printf在遇到它时并不总是在屏幕上打印,而且我听说它会放入缓冲区或类似的东西。因此,如果有人可以明确说明实际情况。如果还可以提供有关输入函数的相同信息,那将是很好的。您告诉得越多越有帮助。谢谢。

拉胡尔·特里帕蒂(Rahul Tripathi)

印刷品

将格式指向的C字符串写入标准输出(stdout)。如果format包含格式说明符(以%开头的子序列),则格式之后的附加参数将被格式化并插入到结果字符串中,以替换它们各自的说明符。

此处已经很好地说明了printf实际如何工作:

  1. 您的软件将调用printf()。

  2. printf()处理您的字符串和args,然后需要执行内核函数,因为在第3环中无法完成对文件的写入。

  3. printf()生成软件中断,将内核函数的编号(在这种情况下为write()函数)放置在寄存器中。

  4. 软件执行被中断,指令指针移至内核代码。所以我们现在在内核函数中处于环0。
  5. 内核处理请求,并写入文件(stdout是文件描述符)。

  6. 完成后,内核使用iret指令返回到软件代码。

  7. 软件代码继续。

ISO C99第7.19.3 / 3节中的一些有用的行

当流没有缓冲时,字符应尽快从源或目的地出现。否则,字符可能会作为一个块累积并传输到主机环境或从主机环境传输。

当流被完全缓冲时,打算在填充缓冲区时将字符作为块与主机环境进行传输。

当流被行缓冲时,在遇到换行符时,字符打算作为块与主机环境进行传输。

此外,当填充缓冲区,在无缓冲流上请求输入或在需要从主机环境传输字符的行缓冲流上请求输入时,字符打算作为一个块传输到主机环境。 。

对这些特性的支持是实现定义的,并且可能会受到setbuf和setvbuf函数的影响。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python 'BeautiulSoup()' 函数实际上是做什么的?

来自分类Dev

Kubernetes实际上是做什么的?

来自分类Dev

->>实际上是做什么的?

来自分类Dev

cURL上的-u标志实际上是做什么的?

来自分类Dev

gitpod是什么:它实际上是做什么的?

来自分类Dev

debug和packageName字段实际上是做什么的?

来自分类Dev

@Basic批注实际上是做什么的?

来自分类Dev

Apache Mesos实际上是做什么的?

来自分类Dev

SAFESEH:NO选项实际上是做什么的

来自分类Dev

session_register_shutdown实际上是做什么的?

来自分类Dev

NSString的isLike:实际上是做什么的?

来自分类Dev

to_i参数库实际上是做什么的?

来自分类Dev

JUnit 4 @Test批注实际上是做什么的

来自分类Dev

do-release-upgrade实际上是做什么的?

来自分类Dev

百胜实际上是做什么的?

来自分类Dev

std :: vector :: swap实际上是做什么的?

来自分类Dev

avs-vault实际上是用来做什么的?

来自分类Dev

ServletResponse的setContentLength()方法实际上是做什么的?

来自分类Dev

此功能实际上是做什么的?

来自分类Dev

“ MOV AX,[BX]”实际上是做什么的?

来自分类Dev

百胜实际上是做什么的?

来自分类Dev

“ GET_ACCOUNTS”实际上是做什么的?

来自分类Dev

do-release-upgrade实际上是做什么的?

来自分类Dev

“ omega”在这里实际上是做什么的?

来自分类Dev

/ dev中的设备文件实际上是做什么的?

来自分类Dev

Xtend在Eclipse中实际上是做什么的?

来自分类Dev

固件包:它们实际上是做什么的?

来自分类Dev

“ set keymap vi”实际上是做什么的?

来自分类Dev

“ __COMPAT_LAYER”实际上是做什么的?

Related 相关文章

热门标签

归档