undefined

C 语言中 errno 及其相关用法

errno 在 <errno.h> 头文件中定义。如下:

1
2
3
#ifndef errno
extern int errno;
#endif

在 linux 中使用 c 语言编程,errno 可以把最后一次调用系统调用的错误代码保留。errno 是在调用库函数之前先清零,然后再进行检查。

1. strerror 使用

strerror 返回一个错误消息字符串的指针。

1
char* strerror(int errno);

2. perror 使用

1
void perror(const char* s);

函数 perror 用来将上一个函数发生错误的原因输出到标准错误(stderr)中。参数 s 所指向的字符串会先打印出来,后面再加上错误原因字符串。此错误原因依照全局变量 errno 的值来决定要输出的字符串。

另外,并不是所有的 C 函数调用发生的错误信息都会修改 errno,例如 gethostbyname 函数

3. errno 的线程安全性

errno 是支持线程安全的。 一般而言,编译器会自动保证 errno 的安全性