在像freopen(file_name,open_mode,stderr)这样的调用之后,我需要在过程结束之前调用fclose(stderr)还是自动完成? 在此先感谢并对我的英语感到抱歉C - freopen()重定向需要fclose()?
1
A
回答
0
是的,这是一种很好的做法,但并不是绝对必要的,因为如果您的进程将立即结束,因为操作系统将在进程死亡时为您清理所有内容。
2
没有必要关闭一个打开的流,因为所有打开的流在程序结束时都关闭,但最好每调用一次fopen
就有一个fclose
。在stderr
的情况下,此流在启动时已打开(您不必拨打fopen
),因此即使发出一些freopen
调用,我也没有理由明确关闭它。
2
当一个进程结束时,它的所有句柄都会自动关闭。但是,关闭您获得的每个手柄的风格很好 - 例如,有人可能想将程序转换为库,或者您可能正在寻找泄漏。无论您致电freopen
并不重要。
但是,在stderr的情况下,情况有点不同。由于您没有专门打开该流,因此您不应关闭它。它也很有可能被其他你不能控制的组件所使用,例如atexit函数或堆栈粉碎检测。
+1
关闭任何标准文件(stdin/out/err)是一个相当糟糕的主意。在关闭文件流后,任何对文件流的使用都会导致未定义的行为,并且有可能您不知道的代码会在关闭它之后尝试访问这些文件(*尤其是* stderr) - 例如,一个库已经注册了一个'atexit'处理程序,并在清理代码时遇到错误。 – 2013-04-20 16:55:10
0
当然。并且只需fclose(stderr);
即可。
相关问题
- 1. 需要htaccess的重定向
- 2. 需要了解重定向
- 3. 重定向规则需要
- 4. 当fopen失败时需要fclose吗?
- 5. Restful Web服务需要,但需要重定向到SharePoint
- 6. 不需要的页面重定向
- 7. 重定向不需要的GET参数
- 8. 不需要nginx的重定向到https
- 9. 过程需要重定向输入
- 10. 需要Apache重定向规则
- 11. .htaccess重定向代码需要
- 12. 页面不再需要重定向
- 13. 需要重定向的网站
- 14. Scrapy FormRequest不需要重定向链接
- 15. 需要帮助的.htaccess重定向
- 16. htaccess的重定向需要帮助
- 17. 奇怪的301重定向需要.htaccess
- 18. asp.net c#需要重定向到另一个页面值为
- 19. C#MVC应用程序不需要重定向
- 20. PHP重定向检查Joomla:需要排除内容页面被重定向
- 21. freopen()等效于C++流
- 22. freopen命令的路径C++
- 23. spring mvc:登录后不要重定向 - 需要两个模型?
- 24. Mod重写 - 需要两个不同的重定向规则
- 25. CakePHP的1.2.6登录重定向到SSL,但需要重新
- 26. 用C++重定向
- 27. 重定向C++ fstream
- 28. 使用需要验证的重定向URL配置锁定?
- 29. 需要帮助重定向一个特定的网址
- 30. CURL不在301重定向之后,我需要做什么?
一般来说,我会同意,除了标准的3流。看到我对phihag答案的评论。 – 2013-04-20 16:55:43
@R。我没有真正注意到这里是'stderr'。其实我也不会关闭它。在程序中没有关联的'fopen'调用,所以即使有'freopen'调用,我也没有理由为'stderr'调用'fclose'。 – ouah 2013-04-20 18:13:43