问题
I have two calls to two different methods :
void func1()
{
// do something
if (fail)
{
// then set errno to EEXIST
}
}
And the second method :
void func2()
{
// do something
if (fail)
{
// then set errno to ENOENT
}
}
When I set the
errnoto some value , what does it do ? just error checking ?How can I set
errnoin the above methodsfunc1andfunc2toEEXISTandENOENT
Thanks
回答1:
For all practical purposes, you can treat errno like a global variable (although it's usually not). So include errno.h and just use it:
errno = ENOENT;
You should ask yourself if errno is the best error-reporting mechanism for your purposes. Can the functions be engineered to return the error code themselves ?
回答2:
IMO, the standard errno designed for system level. My experience is do not pollute them. If you want to simulate the C standard errno mechanism, you can do some definition like:
/* your_errno.c */
__thread int g_your_error_code;
/* your_errno.h */
extern __thread int g_your_error_code
#define set_your_errno(err) (g_your_error_code = (err))
#define your_errno (g_your_error_code)
and also you can still implement your_perror(err_code). More information, please refer to glibc's implementation.
回答3:
#include <errno.h>
void func1()
{
// do something
if (fail)
{
errno = ENOENT;
}
}
来源:https://stackoverflow.com/questions/11699596/how-to-set-errno-value