OS X下UNIX環境高級編程(第三版)學習日誌-第一章ChapterI,出錯處理

1.errno多線程

POSIX和ISO C將errno定義爲一個符號,它擴展稱爲一個可修改的整型左值(lvalue)。它能夠使一個包含出錯編號的證書,也能夠是一個返回出錯編號指針的函數。函數

在支持線程的環境中,多個線程共享進程地址空間,爲避免一個線程干擾另外一個線程,例如Linux支持多線程存取errno,將其定義爲:spa

extern int *__errno_location(void);線程

#define errno (*__errno_location)指針

2.c標準定義了兩個函數,用於打印出錯信息。code

#include <string.h>
char *strerror(int errnum);


strerror函數將errnum映射爲一個出錯消息字符串,而且返回此字符串的指針.進程


#include <stdio.h>
void perror(const char *msg);


它首先輸出由msg指向的字符串,而後是一個冒號,一個空格,接着是對應於errno值的出錯信息,最後是一個換行符。字符串


3.實例string

#include "apue.h"
#include <errno.h>
int
main(int argc,char *argv[]){
    fprintf(stderr,"EACCES:%s\n",strerror(EACCES));
    errno=ENOENT;
    perror(argv[0]);
    exit(0);
}


4.出錯恢復it

errno.h中定義的各類出錯能夠分紅兩類:致命性的和非致命性的。

相關文章
相關標籤/搜索