【问题标题】:When do you use fopen instead of open?你什么时候使用 fopen 而不是 open?
【发布时间】:2011-06-30 08:10:11
【问题描述】:

通过测试我没有发现任何差异。

决定这个的关键是什么?

【问题讨论】:

    标签: c file-io fopen


    【解决方案1】:

    fopen 是任何 C 环境都应提供的可移植接口。此外,它的结果是一个缓冲流 (FILE*),可以与方便的 stdio 函数一起使用。

    open 是一个 Unix/POSIX 特定的接口。它的结果是一个裸的(无缓冲的)文件描述符,它必须与低级系统调用一起使用。它确实允许对 I/O 进行更细粒度的控制(请参阅 POSIX standard 中的标志列表),因此有时您可能想要 open 一个文件,然后可能需要 fdopen 它来获取 stdio 和缓冲。

    【讨论】:

    • 如您的链接所示,open 是一个 POSIX 标准接口,而不仅仅是 unix。
    • @new_perl:你使用fopen,除非你有很好的理由不这样做。 open 更难使用,也不是很便携。
    • 它并不难用,只是不便携。
    • @zvrba:文件描述符比流用于二进制 I/O 以外的任何东西都更难;您需要包含更多标题以获得正确的操作; open 接受可变数量的参数,如果您传递错误数量或错误标志,则难以调试。
    • open 也存在于 Windows C RTL 中,但与 POSIX 略有不同。例如,您无法使用它打开目录。
    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 2010-10-07
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多