我有两个调用两种不同的方法:如何设置errno值?
void func1()
{
// do something
if (fail)
{
// then set errno to EEXIST
}
}
,第二种方法:
void func2()
{
// do something
if (fail)
{
// then set errno to ENOENT
}
}
当我设置
errno
到一定的价值,它有什么作用?只是错误检查?如何设置在上述方法
func1
errno
和func2
到EEXIST
和ENOENT
感谢
传统上,'errno'用于报告*系统错误*。你觉得你的图书馆或你的代码是系统的一部分吗?如果不是,请使用其他机制来报告错误。 – 2012-07-28 12:02:51
不一定,像strtol()这样的效用函数似乎也会返回ERANGE,例如,这不是一个真正的_system error_。 – proteus 2015-01-03 22:50:39
可能适合设置errno的示例将在传递给funopen()的读取或写入函数回调中。在这种情况下,您的实现预计会匹配系统调用的合约(read()或write()),所以在发生错误时返回-1并将errno与特定错误一起设置是有意义的。 – orpheist 2015-06-23 18:25:08