在 vxworks 中,当一个 api 调用返回 ERROR 时,它通常会设置 errno。
我们可以使用 errnoGet() 访问它,并且在 shell 中,我们可以使用 printErrno() 将其转换为有意义的字符串
我可以从我的 C 代码中调用一个函数来执行此翻译并返回一个合适的 char* 吗?
下面的示例说明了,但请注意,这是一个 MVCE,并且 printf 的使用仅作为示例 - 在现实世界中,这将用作不进行屏幕输出的自定义错误处理程序的一部分。
例如
STATUS badFunc()
{
errnoSet(S_someErrnoVal);
return ERROR;
}
void anotherFunc()
{
if(badFunc()==ERROR)
{
//currently, I end up just calling printErrno() here
//but if there was some function errnoToText() i could do something like:
printf("badFunc failed, errno %d, error string%s",errnoGet(), errnoToText(errnoGet()));
}
}
我确信我曾经有过这样的功能,但我在程序员指南中找不到任何参考。