erron是一个错误码,系统调用出错的时候,会设置一个错误码。因为C语言没有异常处理机制,所以要依靠错误码进行异常情况的处理。
如果系统调用出错(一般是调用函数返回-1的时候)errno
会被设置为有关的标记,系统调用成功可以重新设置设置该编码。errno
永远不会被系统调用或者lib库函数设置为0。
errno
是一个左值、可更改的、不能被显式声明的整型。是线程私有的,一个线程中的errno
被改变不会影响其它线程的errno
。
具体详细参考:
http://man7.org/linux/man-pages/man3/errno.3.html
一般的用法是:
if (somecall() == -1) {
perror("somecall() failed\n");
if (errno == ...) { // 判别错误码
// 添加错误处理代码
}
}