【发布时间】:2021-12-02 20:23:09
【问题描述】:
在question之后,出现了一个疑问:
一旦 fopen() 比 open() 快(至少对于顺序写入/就绪操作),前者是库,后者是系统调用,fopen() 在 POSIX 兼容操作系统中做了什么系统调用?
【问题讨论】:
-
这取决于实现,但通常
fopen最终会调用open。 -
我查看了 glibc,它似乎可能根据用例使用
mmap。 -
@Lundin 但是要调用
mmap,它必须先调用open(可能open_memstream除外,但这是完全不同的情况) -
@zwol 我只看了一眼代码,但只读等有不同的用例。
-
fopen()肯定不会比open()快(可能要慢得多,因为它必须设置缓冲)但它可能会导致稍后的 I/O 更快。