在C或C ++程序中,我可以使用freopen将输出(即stdout文件描述符)重定向到另一个文件(或丢弃它,将文件描述符重新打开到/ dev / null或另一个接收器)
问题是:如果我这样做,我应该在程序结束执行之前明确关闭文件描述符吗?为什么?在哪个平台上?如果我不关闭文件描述符,一般会发生什么?在这种特定情况下会发生什么?
答案 0 :(得分:4)
我应该在程序结束执行之前明确关闭文件描述符吗?
freopen()
函数打开名称为指向字符串的文件 通过 filename 并将stream指向的流与它相关联。该 原始流(如果存在)已关闭。
所以不,你不必关闭原来的FILE *
。不过,您应该关闭从freopen
电话回来的那个。顺便说一句 - 这些都是FILE *
变量,而不是文件描述符。
<强>为什么吗
因为文档说你没必要。
在哪些平台上
正确实现C标准定义的freopen(3)
。
如果我不关闭文件描述符,一般会发生什么情况?
当程序退出时,操作系统会清理程序使用的资源。