0

我正在使用 RHEL 4

我正在使用系统调用统计如下:-

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

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

有时我会收到错误消息“”发生意外错误 0”

这意味着我得到错误为 "0" 。我检查了文件权限没问题

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

有什么建议么?

4

2 回答 2

1

如果你这样称呼它,它会给你任何有意义的错误信息吗?

   if (stat("file", &stat_obj) == -1) {
       perror("stat");
   }
于 2009-06-29T08:44:18.147 回答
1

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

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

于 2009-06-29T14:21:34.097 回答