c语言 - "freopen'ed"标准输出应该关闭吗?



在C或C++程序中,我可以使用freopen将输出(即stdout文件描述符)重定向到另一个文件(或者通过将文件描述符重新打开到/dev/null或另一个接收器来放弃它)。

问题是:如果我这样做,我是否应该在程序结束执行之前明确关闭文件描述符?为什么?在哪些平台上?如果我不关闭文件描述符,通常情况下和这种特定情况下会发生什么?

  1. 我应该在程序结束执行之前明确关闭文件描述符吗

    来自freopen(3)手册页:

    freopen()函数打开其名称为所指向字符串的文件通过filename并将流指向的流与其关联原始流(如果存在)被关闭。

    所以不,您不必关闭原始FILE *。不过,您可能应该关闭从freopen调用返回的那个。BTW-这些都是FILE *变量,而不是文件描述符。

  2. 为什么

    因为文件上说你不必这么做。

  3. 在哪些平台上

    任何正确实现C标准定义的freopen(3)的。

  4. 如果我不关闭文件描述符,通常情况下以及在这种特定情况下会发生什么

    当程序退出时,操作系统会清理程序使用的资源。

相关内容

  • 没有找到相关文章

最新更新