[英]stat systecall in linux returning error
我正在使用RHEL 4
我正在使用syscall统计信息,如下所示:
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
是每个线程的变量,因此,如果将其声明为全局变量,则会得到错误的变量。 (在某些平台上,有时对于线程安全的errno,还需要一个特殊的编译标志,例如-D_TS_ERRNO
,但在Linux上则不需要这样的标志。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.