STAT systecall在linux返回错误
-
21-08-2019 - |
题
我使用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上没有这样的标志。)
不隶属于 StackOverflow