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())。 出于线程安全(或任务安全)的原因,这正是我们在大多数平台上所做的。