您的位置:澳门皇冠金沙网站 > 办公软件 > 澳门皇冠金沙网站首页glibc_error reporting,glibc_e

澳门皇冠金沙网站首页glibc_error reporting,glibc_e

2019-11-14 17:52

一.  perror 错误代码查看工具

           在mysql 的使用过程中,可能会出现各种各样的error。这些error有些是由于操作系统引起的,比如文件或者目录不存在等等,使用perror的作用就是解释这些错误代码的详细含义。  perror 使用方法如下:

*       澳门皇冠金沙网站首页 1
*

    例如:指定错误号30和60分别是指什么错误
      澳门皇冠金沙网站首页 2
    在MYSQL系统出现故障或错误后,一般用户都会去看错误日志,而错误日志里一般都会发现这样的错误编号。这时我们就可以利用这个命令分析到底是哪里出问题了。

错误消息:

  我们知道错误代码,但总觉得查文档不方便。幸好库文件给我们提供了错误消息报告函数。这些函数可以报告一个具有说明性的错误消息。部分消息报告函数我们可以自己定义消息格式。

  函数strerror和perror为每一个错误代码都提供了一个标准的错误消息。而变量program_invocation_short_name则可以方便获取程序的名字,告诉我们哪个程序出错。

几个函数原型:

#include <string.h>
char * strerror(int errnum);
char *strerror_r(int errnum, char *buf, size_t n);

说明:  strerror和strerror_r两个函数差不多。区别在于安全性,官方文档对strerror的注释是MT-Unsafe race:strerror,而strerror_r则为MT-Safe。strerror返回一个静态申请的字符串缓冲区,该缓冲区被所有线程共享。而strerror_r返回的是一个私有副本,并不被其他线程共享。另外这两个函数都有可能造成内存溢出(静态申请的缓冲区)。尽管strerror_r可以指定字符串长度,但这长度是char *buf的。这函数有两个返回值,一个使用reurn返回,还有一个是char *buf。return返回的依旧是一个静态缓冲区。

 

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

说明:  perror将error message打印到标准错误输出中。如果你传进的参数是一个空指针,perror会根据errno打印错误消息。如果char *message非空,perror会将message当作错误消息的前缀输出。perror得立即调用,不然errno的值可能发生变化。

 

char *program_invocation_name; //等同于argv[0]
char *program_invocation_short_name //不包含目录名。

说明:  这两个变量的初始化工作由glibc库在还未调用main函数之前执行。所以在非GNU库中,这两个变量不起效果,在实际代码中我们需要定义_GNU_SOURCE宏,告诉编译器使用GNU库。

  以下两个函数在整个GNU project中使用非常广泛。

void error(int status, int errnum, const char *format, ...);
void error_at_line(int status, int errnum, const char *fname, unsigned int lineno, const char *format, ...);

说明:  这两个函数的返回和status有关,如果status是0,则正常格式化打印错误消息。全局变量error_message_count也会做自增操作。错误消息的格式如下:program_name: format_string: error_messager_for_errnon。如果status非零,这两个函数将调用exit status,即以状态status退出(不会返回)。关于program_name:全局变量error_print_progname指向的函数决定了program_name的值。error_at_line函数有点特别:多了fname,lineno两个参数。错误消息格式如下:program_name:fname:lineno format_string: error_mesage_for_errnon。如果全局变量error_one_per_line被设置为非零值,每一行只会打印一个错误消息。

  除了以上的错误消息函数,我们还有以下几个:这几个函数主要用在BSD系统中,定义在头文件err.h中,在gnu系统中不推荐使用。

void warn(const char *format, ...)
void vwarn(const char *format, va_list ap)
void warnx(const char *format, ...)
void vwarnx(const char *format, va_list ap)
void err(int status, const char *format, ...)
void verr(int status, const char *format, va_list ap)
void errx(int status, const char *format, ...)
void verrx(int status, const char *format, va_list ap)

各位看官自行查看手册吧。just be a man!!!

http://www.bkjia.com/Cyy/1147269.htmlwww.bkjia.comtruehttp://www.bkjia.com/Cyy/1147269.htmlTechArticleglibc_error reporting,glibc_error 很多GNU C库里的函数都会侦测并报告错误条件。我们的程序需要检测这些错误条件。比如:我们打开一个输入文...

二 总结

       在前面几章中讲到了常用的几个工具,其实还有像replace (sql文本字符替换工具),这个以后用的时候在查看说明。 mysqlimport(数据导入工具)后续会在讲到。mysqlhotcopy(MyISAM表热备份工具)这个只针对MyISAM存储引擎的表,就不在说明。最后熟练使用这些工具,将会带来很大便利。

glibc_error reporting,glibc_error

  很多GNU C库里的函数都会侦测并报告错误条件。我们的程序需要检测这些错误条件。比如:我们打开一个输入文件时需要判断该文件是否正确的打开。如果没有正确打开,我们需要打印错误或者采取其他正确的方式。为了利用这种错误报告机制,我们需要包含头文件errno.h

本文由澳门皇冠金沙网站发布于办公软件,转载请注明出处:澳门皇冠金沙网站首页glibc_error reporting,glibc_e

关键词:

  • 上一篇:没有了
  • 下一篇:没有了