在vxworks中将errno转换为字符串

时间:2013-10-08 15:03:34

标签: c vxworks errno

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

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

2 个答案:

答案 0 :(得分:2)

您可以使用strerror()

fprint( stderr, "error: %s\n", strerror( errno ) );

答案 1 :(得分:-2)

来自vxWorks:

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

所以要打印与errno关联的String:printErrno(errno)