【发布时间】:2021-09-30 09:04:21
【问题描述】:
手册页 sysctl(3) 声明 sysctlbyname 和其他提到的函数在成功的情况下返回 0 或 -1 并设置 errno。但是sysctlbyname 的Apple Documentation (用于目标C)对返回值表示以下内容:
返回值
0 表示成功,或表示出现问题的错误代码。可能的错误代码包括 EFAULT、EINVAL、ENOMEM、ENOTDIR、EISDIR、ENOENT 和 EPERM。
那么到底是0/-1 & errno 还是直接返回的错误码呢?还是它在目标 C 中返回的东西与手册页中提到的 C 函数不同?但即使是 Apple 文档中提供的示例也只检查返回值 -1,然后使用 errno 记录错误。在我看来,Apple 的文档是错误的或至少不清楚。
【问题讨论】:
-
考虑到 Apple 文档中的示例也使用
-1作为错误返回,我认为它的措辞很糟糕。它在出错时返回-1,并且“可能的错误代码”像往常一样存储在errno中。