OS X下UNIX环境高级编程(第三版)学习日志-第一章ChapterI,出错处理
1.errno POSIX和ISO C将errno定义为一个符号,它扩展称为一个可修改的整型左值(lvalue)。它可以使一个包含出错编号的证书,也可以是一个返回出错编号指针的函数。 在支持线程的环境中,多个线程共享进程地址空间,为避免一个线程干扰另一个线程,例如Linux支持多线程存取errno,将其定义为: extern int *__errno_location(void); #define errno (*__errno_location) 2. c标准定义了两个函数,用于打印出错信息。 #include <string.h> char *strerror(int errnum); strerror函数将errnum映射为一个出错消息字符串,并且返回此字符串的指针. #include <stdio.h> void perror(const char *msg); 它首先输出由msg指向的字符串,然后是一个冒号,一个空格,接着是对应于errno值的出错信息,最后是一个换行符。 3.实例 #include "apue.h" #include <errno.h> int main(int argc,char *argv[]){ fprintf(stderr,"EACCES:%s\n",strerror(EACCES)); errno=ENOENT; perror(argv[0])