【问题标题】:stat systecall in linux returning errorlinux中的stat系统调用返回错误
【发布时间】:2010-11-06 15:03:11
【问题描述】:

我正在使用 RHEL 4

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

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

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

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

这意味着我得到错误为 "0" 。我检查了文件权限是否正常

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

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 所有好的建议,可能是在没有更多信息的情况下可以做到的最好的建议。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 2019-04-22
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多