2

在 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()));
    }
}

我确信我曾经有过这样的功能,但我在程序员指南中找不到任何参考。

4

2 回答 2

2

您可以使用strerror()

fprint( stderr, "error: %s\n", strerror( errno ) );
于 2013-10-08T15:07:54.667 回答
-2

从 vxWorks :

如果 errno 值在错误状态符号表 statSymTbl 中输入了相应的字符串,则可以使用 printErrno( ) 显示与 errno 关联的字符串常量。有关错误状态值和构建 statSymTbl 的详细信息,请参阅 errnoLib 的 VxWorks API 参考。

所以要打印与 errno 关联的字符串:printErrno(errno)

于 2018-03-06T11:59:13.203 回答