stat系统调用linux返回错误

时间:2009-06-29 08:14:05

标签: c linux operating-system redhat system-calls

我正在使用RHEL 4

我正在使用系统调用stat,如下所示: -

if (stat ("file",&stat_obj)){

     if (errno == ENOENT){
        printf("File not found");
     }else{
        printf("Unexpected error occured %d ",errno);
     }
}

有时我收到错误消息“”出现意外错误0“

这意味着我得到错误为“0”。我检查了确定的文件权限

这是什么意思?我无法理解为什么有时会发生这种情况?

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果您这样称呼它会给您带来任何有意义的错误消息吗?

   if (stat("file", &stat_obj) == -1) {
       perror("stat");
   }

答案 1 :(得分:1)

你的程序中有信号处理程序吗?如果是这样,它可能会影响errno,那么请确保它在输入时保存errno并在返回之前将其恢复为原始值。

还要确保#include <errno.h>,并且不要自己声明errno,特别是如果您的程序是多线程的。 errno是一个每线程变量,所以如果你将它声明为全局变量,你就会得到错误的变量。 (在某些平台上,您有时还需要一个特殊的编译标志,如-D_TS_ERRNO用于线程安全的errno,但Linux上不需要这样的标志。)