在UNIX系统中,当函数出错时,通常会返回一个负值,同时整型变量errno会设置为一个具有特定信息的值。例如,open函数在成功时返回一个非负文件描述符,若出错则返回-1。在open函数出错时,errno可能有大约15种不同的值(如文件不存在、权限问题等)。某些函数并不返回负值,而是使用另一种约定,例如大多数返回指针的函数在出错时会返回一个null指针。
POSIX定义了errno为:extern int errno; 相较于C标准,POSIX.1中的定义更为严格。C标准允许errno是一个宏,可以扩展为可修改的整型左值(如返回一个指向出错数的指针的函数)。关于errno有两条规则需要注意。第一条规则是:如果没有出错,其值不会被清除。因此,只有在函数返回值指明出错时,才需检验其值。第二条是:任一函数都不会将errno的值设置为0,在
C标准定义了两个函数来帮助打印出错信息。包括:
#include <string.h>
char *strerror(int errnum);
</string.h>
返回:指向消息字符串的指针。此函数将errnum(通常是errno的值)映射为一个出错信息字符串,并返回此字符串的指针。
了解更多关于POSIX标准的详细信息,可以参考以下资源:
暂无评论