在vxworks中将errno转换为字符串

问题描述 投票:1回答: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()));
    }
}

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

c vxworks errno
2个回答
2
投票

你可以使用strerror()

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

-2
投票

来自vxWorks:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.