errno 与库函数返回的错误

errno vs errors returned by library functions

对于errno,有一堆库函数,如strerror()等,可以转换或打印错误代码。

但是由库函数 return 编辑的错误代码呢?

例如write() 将 return EAGAINEBADF

这些符号是从哪里来的?它们与 strerror() &co 兼容吗?

EAGAINEBADF等是系统错误编号的符号,defined in errno.h。它们与 strerror 和相关函数兼容。

请注意 write 不会 return 这些值之一出错;出错时,它 returns -1,并适当地设置 errno

函数很少return 错误号;有趣的是,其中之一是 strerror_r,成功时 return 为 0,失败时为 EINVALERANGE