stdout
我想知道 Linux C和STDOUT_FILENO
Linux C之间的区别。
经过一番搜索工作,我得出以下结论。你能帮我复习一下并纠正其中的任何错误吗?谢谢
stdout
属于C语言的标准I/O流;其类型为 FILE* 并在 stdio.h 中定义STDOUT_FILENO
,具有 int 类型,定义在unistd.h
。它是LINUX系统的文件描述符。中unistd.h
,解释如下:
The following symbolic constants shall be defined for file streams: STDERR_FILENO File number of stderr; 2. STDIN_FILENO File number of stdin; 0. STDOUT_FILENO File number of stdout; 1.
所以,在我看来,STDOUT_FILENO
属于系统级的调用,在某种程度上,就像一个系统API。STDOUT_FILENO
可用于描述系统中的任何设备。
位于stdout
更高级别(用户级别?),实际上封装了STDOUT_FILENO
. stdout
有 I/O 缓冲区。
这就是我对他们差异的理解。任何意见或更正表示赞赏,谢谢。