我正在复习 unix 调用,所以这似乎是一个幼稚的问题(在假期中,只是无聊)。我知道 C 中有标准的 i/o,但它似乎总是在实践中用于类 UNIX 系统的低级调用(写入、读取、打开)(刚刚检查了几个开源项目)。 standard-io在实践中用的多吗?为什么低级 api 使用更多,是否存在中断或特定原因?还是我从一些精心挑选的案例中做出了关于低级别更受欢迎的错误假设?我知道标准 i/o 是一个 C 语言元素,但似乎他们实现了同样的事情,而且低级使用得更多。
最佳答案
stdio(3)库不涵盖 Linux 上可用的所有功能。特别是,socket(2) <stdio.h>
不提供其他低级功能(例如使用 poll(2) 等进行轮询)。功能。然而,<stdio.h>
函数通常给出 buffering出于性能原因,这实际上非常重要。所以打电话write(2)对于每个字节,效率都非常低。使用 fflush(3)冲洗 <stdio.h>
缓冲区。
阅读Advanced Linux Programming了解更多。
在实践中,混合 <stdio.h>
函数和低级系统调用(如 read(2)、write(2)、mmap(2)、poll(2)、fcntl(2) ...)与 <stdio.h>
函数通常(但不总是)不切实际。另见 fileno(3) .因此人们可能会选择在系统调用级别进行编码。
但是,当<stdio.h>
功能足够了,使用起来很方便。
关于c - 用于 unix/linux 开发的标准 I/O 库或低级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789997/