查看pthread_*
等EBUSY
函数的文档,以及文档的措辞:
返回值
如果成功,pthread_rwlock_destroy()和pthread_rwlock_init()函数将返回零;否则,应返回错误编号以指示错误。
如果实现了[EBUSY]和[EINVAL]错误检查,就好像它们是在函数处理开始时立即执行的,并且在修改由指定的读写锁定状态之前导致错误返回。 rwlock中。
这表示如果出现错误,则应返回错误号。然后,它解释了错误代码:
错误
如果出现以下情况,pthread_rwlock_destroy()函数可能会失败:
[EBUSY]
该实现已检测到在锁定时破坏rwlock引用的对象的尝试 ...
没有提及是否返回-EBUSY
本身或-E*****
。几乎在我看到函数返回错误代码的任何地方,它们都会返回pthread_*
。
这是否意味着-EBUSY
函数也遵循此约定?我应该检查EBUSY
或EBUSY
本身的返回值吗?
在同一主题上,他们会将errno
存储在-EBUSY
或{{1}}吗?
答案 0 :(得分:4)
他们返回正数的错误代码。应用程序看不到任何内容返回否定的错误代码。这是内核的实现细节。