在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()));
}
}
我确信我曾经有过这样的功能,但我无法在程序员指南中找到任何参考。
答案 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)