提问人:William Pursell 提问时间:3/31/2011 更新时间:3/31/2011 访问量:199
失败的 fopen 会影响文件系统吗?
Can a failed fopen impact the filesystem?
答:
0赞
Maz
3/31/2011
#1
fopen() 失败的唯一原因是文件以某种方式无法访问或无法修改。但是,如果您担心文件被修改,则可以使用带有标志 O_WRITE 的 open() 命令。然后,您可以使用 fdopen() 将其转换为 FILE* 指针。
评论
0赞
JaredPar
3/31/2011
您在此处忽略了硬件故障,这也可能导致故障fopen
0赞
xappymah
3/31/2011
From : “fopen()、fdopen() 和 freopen() 函数也可能失败,并为例程 malloc(3) 指定的任何错误设置 errno”。所以,失败的原因比你介绍的要多。man fopen
0赞
Maz
3/31/2011
还行。我不知道。但是,我的解决方案仍然保证文件不会被修改。
6赞
JaredPar
3/31/2011
#2
不,如果失败,不能保证文件的状态。故障可能来自打开文件、将截断提交到磁盘等任何操作......失败提供的唯一保证是您无权访问该文件。fopen(path, "w")
0赞
R.. GitHub STOP HELPING ICE
3/31/2011
#3
很好的问题,我认为答案是否定的。 必须分配一个结构,实现它时的自然操作顺序是先打开文件,然后尝试分配 .这样,只是一个包装器(或带有一些前导下划线的类似函数或用于命名空间一致性的函数)。fopen
FILE
FILE
fopen
fdopen
就我个人而言,当您在任何故障后关心文件的状态时,我根本不会使用函数。即使您打开了文件,如果写入函数返回失败,stdio 的缓冲也几乎不可能知道错误发生在哪里,甚至更不可能将文件恢复到可用的一致状态。stdio
评论