统计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");
}
答
你的程序中是否有信号处理程序?如果是这样,并且可能会影响errno
,那么请确保在输入时节省了errno
,并在返回之前将其恢复到其原始值。
还要确保你自己#include <errno.h>
,而且不是自己声明errno
,特别是如果你的程序是多线程的。 errno
是一个每个线程的变量,所以如果你声明它是一个全局变量,你可能会得到一个错误的变量。 (在某些平台上,您有时也需要一个特殊的编译标志,例如-D_TS_ERRNO
用于线程安全的errno,但在Linux上不需要这样的标志。)
+0
所有好的建议和可能在没有更多信息的情况下可以做到最好。 – Duck 2009-06-29 16:07:00
我做了strerror(errno),但它返回成功 – anish 2009-06-29 09:00:01