首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“文件损坏”错误?

“文件损坏”错误?
EN

Stack Overflow用户
提问于 2018-07-28 08:39:07
回答 5查看 444关注 0票数 1

是否有常规的errno代码来指示指定的文件已损坏(它不符合应该使用的文件格式)?

我正在编写一个文件解析器,不知道返回的最合适的代码是什么。始终存在EINVAL,尽管我希望得到更具体的内容,因为它也将用于任何其他无效参数,特别是在我的情况下,调用方知道调用失败是因为文件损坏了。

EBADFEDOMEILSEQEIOENOSTREPROTO是我所看到的,通过某种想象力可以用来表达这种意义的人,但这种情况有什么惯例吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-07-30 19:33:13

好的,POSIX (和UNIX之前的)对文件不加格式,所以很难以格式表示失败。文件只是一个字节序列,其中任何字节都可以跟随到文件中的前一个字节。读取时不需要指定记录边界或大小,所以我们如何确定文件的格式不一致?

Errno值用于识别系统错误(在发出系统调用时由于系统中某些条件而产生的错误),因此对于糟糕的格式没有ESOMETHING常量。

顺便说一句,符合errno变量值的数字列表是特定于系统的,并且可以根据内核/stdlib的版本进行更改.因此,您不能选择一个数字,并确保您选择的数字将不会被系统在未来的版本中使用。

因此,使用errno返回错误代码是错误的做法。许多库遵循与stdlib相同的模式,但带有前缀的something_errno变量。这是我对你的推荐。

无论如何,解析器通常返回一个解析树(语法树),您可以使用节点字段来指示解析错误。不要污染系统错误的含义,使用它们除了它们的目的之外,什么也不做。

票数 0
EN

Stack Overflow用户

发布于 2018-07-28 08:46:22

我的首选是EBADMSG,然后是EPROTO,最后是EINVAL,作为最后的通用手段。

相关讨论如下:https://github.com/billziss-gh/winfsp/issues/156

票数 0
EN

Stack Overflow用户

发布于 2018-07-28 09:30:16

errno代码以指示指定的文件.不符合文件格式,应该是

EFTYPE

挑剔的人可能会争辩说,这段代码适用于“相反”的情况:

来自相关POSIX规范

此错误代码在以前的建议中被建议为“文件类型的不适当操作”,这意味着所请求的操作不适合函数调用中指定的文件。

但是呃..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51569594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档