当UNIX函数出错时,往常返回一个负值,而且整型变量errno通常设置为具有特定信息的一个值。
例如,open函数如成功执行则返回一个非负文件描述符,如出错则返回-1。在open出错时,有大约15种不同的errno值(文件不存在,许可权问题等)。
某些函数并不返回负值而是使用另一种约定。例如,返回一个指向对象的指针的大多数函数,在出错时,将返回一个null指针。
文件<errno.h>中定义了变量errno以及可以赋与它的各种常数。
对于errno应当知道两条规则。
第一条规则是:如果没有出错,则其值不会被一个例程清除。因此,仅当函数的返回值指明出错时,才检验其值。
第二条是:任一函数都不会将errno值设置为0,在<errno.h>中定义的所有常数都不为0
C标准定义了两个函数,它们帮助打印出错信息。
char *strerror(int errnum);
此函数将errnum(它通常就是errno值) 映射为一个出错信息字符串,并且返回此字符串的指针。
void perror(const char * msg);
首先输出由msg指向的字符串,然后是一个冒号,一个空格,然后是对应于errno值的出错信息,然后是一个新行符。
联系客服