在线文档教程

erl_error

erl_error

C库

erl_error

库摘要

错误打印例程。

描述

此模块包含一些错误打印例程,这些例程取自W.Richard Stevens的“UNIX环境中的高级编程”。

这些函数的调用方式与printf(),即包含格式说明符的字符串,后面跟着相应的参数列表。这些函数的所有输出都是stderr...

输出

void erl_err_msg(FormatStr, ... )

类型

调用者提供的消息被打印出来。这个函数只是一个包装器fprintf()...

void erl_err_quit(FormatStr, ... )

类型

当发生致命错误时使用此函数,该错误不是由于系统调用造成的。调用者提供的消息被打印出来,并且进程以退出值结束。1此函数不返回。

void erl_err_ret(FormatStr, ... )

类型

在系统调用失败后使用此函数。调用方提供的消息后面跟着描述失败原因的字符串。

void erl_err_sys(FormatStr, ... )

类型

系统调用失败后使用此功能。由调用者提供的消息被打印,后面跟着描述失败原因的字符串,并且该过程以退出值结束1。该功能不返回。

错误报告

Erl_Interface中的大部分函数通过返回一些其他无意义的值(通常为NULL或负数)来向调用者报告失败。 由于这只会告诉你事情并不顺利,如果你想了解更多关于失败的信息,请查看erl_errno中的错误代码。

输出

volatile int erl_errno

erl_errno最初(在程序启动时)为零,然后由许多Erl_Interface函数设置,如果未能发现非零错误代码,则表明它遇到了什么样的错误。一个成功的函数调用可以改变erl_errno(通过调用其他失败的函数),但是没有函数不会将其设置为零。这意味着你不能用erl_errno,看看如果一个函数调用失败。相反,每个函数都会以自己的方式报告失败(通常是返回一个负数NULL),在这种情况下,您可以检查erl_errno细节。

erl_errno使用系统中定义的错误代码<errno.h>。

erl_errno是一个“可修改的左值”(就像ISO C定义的errno一样)而不是变量。 这意味着它可以实现为一个宏(例如扩展为* _erl_errno())。 出于线程安全(或任务安全)的原因,这正是我们在大多数平台上所做的。