统计systecall在linux返回错误

问题描述:

我使用RHEL 4统计systecall在linux返回错误

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

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

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

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

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

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

有什么建议吗?

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

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

我做了strerror(errno),但它返回成功 – anish 2009-06-29 09:00:01

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

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

+0

所有好的建议和可能在没有更多信息的情况下可以做到最好。 – Duck 2009-06-29 16:07:00