gpt4 book ai didi

c - "File corrupt"错误号?

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:50 28 4
gpt4 key购买 nike

是否有一个约定俗成的errno代码表明指定的文件已损坏(它不符合应有的文件格式)?

我正在编写文件解析器,但不知道要返回的最合适的代码是什么。总是有 EINVAL,虽然我希望有比这更具体的东西,因为它也可以用于任何其他无效参数,特别是在我的情况下,调用者知道调用失败,因为文件已损坏。

EBADFEDOMEILSEQEIOENOSTREPROTO 是我看到的可以通过某种想象力用于这种含义的那些,但是对于这种情况有约定吗?

最佳答案

好吧,POSIX(以及之前的 UNIX)没有为文件强加任何格式,因此很难发出格式错误的信号。文件只是一个字节序列,其中任何字节都可以跟在文件中的前一个字节之后。读取时无需指定记录边界或大小,因此我们如何识别文件不符合格式?

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

顺便说一下,符合errno 变量值的数字列表是系统特定的,并且会随着内核/stdlib 版本的不同而变化...因此您无法选择一个数字,并确保您选择的数字不会被系统在未来的版本中使用。

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

无论如何,解析器通常会返回一个解析树(语法树),您可以使用节点字段来指示解析错误。不要污染系统错误的含义,只为它们的设计目的而使用它们。

关于c - "File corrupt"错误号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51569594/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com