我使用RHEL 4

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

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

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

有时我得到的错误消息为“×”时发生意外错误0"

这意味着我得到误差为“0”。我检查是OK文件权限

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

任何建议?

有帮助吗?

解决方案

它是否给你任何有意义的错误消息,如果你这样称呼它?

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

其他提示

你有没有在你的程序的信号处理程序?如果是的话,它可能会影响errno,然后确保它在输入保存errno并在返回之前将它恢复到原来的值。

另外,还要确保你#include <errno.h>,而不是宣称自己errno,特别是如果你的程序是多线程的。 errno是每个线程的变量,因此,如果你宣布它作为一个全球性的,你可以得到错误之一。 (在某些平台上,你有时也需要像-D_TS_ERRNO线程安全的errno一个特殊的编译标志,但需要在Linux上没有这样的标志。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top