如何区分具有相同错误代码的两个不同错误?

How to differentiate between two different errors with the same error code?

通读 Linux 手册页,我有时会遇到可以 return/set 两个不同错误的相同错误代码的函数。一些例子是:

还有更多例子(比如send can set EAGAIN and EAGAIN and bind可以设置EADDRINUSEEADDRINUSE,但它们似乎取决于你是否使用数据报套接字,因此可以理解根据上下文找出正确的错误)。

我应该区分这些错误是什么意思?

没有通用的方法来区分这些条件。

有时手册页会指定您可以检查的条件,但仅此而已。

您应该设计您正在构建的内容,以便您尝试检测的差异无关紧要。例如,如果您得到 EAGAIN,请稍后再试(或者 return 给客户端的东西会导致它再试)。