我正在使用RHEL 4
我正在使用系统调用stat,如下所示: -
if (stat ("file",&stat_obj)){
if (errno == ENOENT){
printf("File not found");
}else{
printf("Unexpected error occured %d ",errno);
}
}
有时我收到错误消息“”出现意外错误0“
这意味着我得到错误为“0”。我检查了确定的文件权限
这是什么意思?我无法理解为什么有时会发生这种情况?有什么建议吗?
答案 0 :(得分:1)
如果您这样称呼它会给您带来任何有意义的错误消息吗?
if (stat("file", &stat_obj) == -1) {
perror("stat");
}
答案 1 :(得分:1)
你的程序中有信号处理程序吗?如果是这样,它可能会影响errno
,那么请确保它在输入时保存errno
并在返回之前将其恢复为原始值。
还要确保#include <errno.h>
,并且不要自己声明errno
,特别是如果您的程序是多线程的。 errno
是一个每线程变量,所以如果你将它声明为全局变量,你就会得到错误的变量。 (在某些平台上,您有时还需要一个特殊的编译标志,如-D_TS_ERRNO
用于线程安全的errno,但Linux上不需要这样的标志。)