c - 缓冲区困惑

标签 c unix buffering

谁能澄清程序使用的缓冲区类型?

例如:

我有一个从标准输入读取到标准输出的 C 程序。

这里涉及到哪些缓冲区?我知道有2个。 一种由内核提供,用户对其没有任何控制权。 一种提供标准流,即 stdout、stdin 和 stderr。每个都有一个单独的缓冲区。

我的理解正确吗?

谢谢, 约翰

最佳答案

如果您在 linux/unix 上工作,那么您可以更容易地理解三个流,即

1.STDIN: 文件描述符值 0 (IN unix)

2.STDOUT:文件描述符值1

3.STDERR:文件描述符值2

默认情况下,这些流对应于键盘和监视器。在 unix 中,我们可以更改这些流以从文件而不是键盘读取输入。要在文件上显示输出而不是监视器,请使用 close(),dup() 系统调用。是的,涉及 3 个缓冲区。要清除 c 中输入缓冲区的内容,我们使用 fflush() 函数。 如果您想了解有关在 UNIX 中处理这些流的更多信息,请告诉我。

关于c - 缓冲区困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5049350/

相关文章:

c - 如何在不使用 realloc() 的情况下扩展字符串容量?

c - 在c中表示汉字

c - 在C中随机化一个字符串

bash - 递归地将文件放入Unix中的回收站

unix - 使用 mv 命令 - 文件已删除?

c - 在按Ctrl + D后停止用户输入需要按2次。为什么?

Cygwin:制造问题

java - Android MediaPlayer.OnBufferingUpdateListener - 缓冲内容的百分比为负

c - 将 C 程序设置为行缓冲区将不起作用