APUE学习之出错处理

简介: 当UNIX函数发生错误时,通常会返回一个负值,而且整形变量errno通常被设置为具有特定信息的值。        errno是全局变量,仅当函数出错才有被改变。对待errno,应注意两条规则           1:如果没有出错,其值不会被例程清除,也就是说,当且仅当函数出错时,马上检查errno的值才有意义。
     当UNIX函数发生错误时,通常会返回一个负值,而且整形变量errno通常被设置为具有特定信息的值。
 
     errno是全局变量,仅当函数出错才有被改变。对待errno,应注意两条规则
          1:如果没有出错,其值不会被例程清除,也就是说,当且仅当函数出错时,马上检查errno的值才有意义。
          2:任何函数都不会将errno的值置为0。
 
     C标准定义了两个函数,用于打印出错信息:char *strerror(int errnum)和void perror(const char *msg)。
 
     strerror函数将errnum(通常就是errno的值)映射为出错消息字符串,并返回该字符串的指针。
     perror函数基于errno的当前值,在标准错误上产生一条出错消息然后返回。
 
例子:
     #include "apue.h"
     #include <errno.h>
 
     int main(int argc, char **argv)
     {
          fprintf(stderr, "EACCES: %s\n", strerror(EACCES));
          errno = ENOENT;
          perror(argv[0]);
          return 0;
     }
 
     ./a.out
     EACCES: Permission denied
     ./a.out: No such file or directory
目录
相关文章
|
6月前
|
存储 Unix C语言
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
152 0
|
6月前
|
存储 Unix Linux
<C语言错误处理> <signal.h>头文件及signal函数等内置函数
<C语言错误处理> <signal.h>头文件及signal函数等内置函数
|
6月前
|
C语言
<C语言错误处理> 非局部跳转<setjmp.h>头文件
<C语言错误处理> 非局部跳转<setjmp.h>头文件
|
存储 Linux C语言
Linux系统编程(再论execve)
Linux系统编程(再论execve)
72 0
|
存储 Linux
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回。
301 0
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
C中使用errno查看函数调用的错误
C中使用errno查看函数调用的错误
75 0
|
存储
【APUE】文件 I/O 操作(一)
【APUE】文件 I/O 操作(一)
221 0
【APUE】文件 I/O 操作(二)
【APUE】文件 I/O 操作(二)
113 0