加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C4996,fopen弃用:为什么? (不是:如何压制)

发布时间:2020-12-16 10:07:58 所属栏目:百科 来源:网络整理
导读:使用fopen_s更安全的fopen是不安全的? 如何以安全的方式使用fopen(如果可能的话)? (我不想知道如何抑制警告 – 有足够的stackoverflow文章来回答这个问题) 编辑:问题被关闭为“基于意见”(即使只有一个答案,我没有看到太多的意见).我会尝试改写一下:如果
使用fopen_s更安全的fopen是不安全的?

如何以安全的方式使用fopen(如果可能的话)?

(我不想知道如何抑制警告 – 有足够的stackoverflow文章来回答这个问题)

编辑:问题被关闭为“基于意见”(即使只有一个答案,我没有看到太多的意见).我会尝试改写一下:如果有人能够展示微软(不赞成使用该功能)的文档如何/在哪里找到它,这将解释为什么它被弃用会更好.

解决方法

Microsoft CRT实现了C11附录K中描述的安全库增强.这是一种规范性但非强制性的. fopen_s()在K.3.5.2.1节中描述.同样由 rule FIO06-C的CERT研究所负责.

问题是fopen()可以追溯到程序员仍然可以假设他们的程序是唯一一个操纵文件的简单时间.一个从未真实存在的假设.它没有办法描述其他进程对文件的访问是如何受限的,CRT实现传统上打开文件而不拒绝任何访问.非标准替代品已用于解决此问题,如_fsopen().

如果打开文件进行写入,则会产生后果,另一个进程也可以打开文件进行写入,文件内容将无可救药地损坏.如果在另一个进程正在写入文件时打开文件进行读取,则文件内容的视图是不可预测的.

fopen_s()通过在文件打开以进行写入时拒绝所有访问来解决这些问题,并且在打开文件进行读取时仅允许读取访问.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读