我正在写一个文件监视器和stat因为某些原因无法获取文件信息,为什么?
struct stat info;
int fd = open(path, O_EVTONLY);
if (fd <= 0){
exit(-1);
}
int result = fstat(fd, &info);
if (!result){
exit(-1); //This happens! Errno says "No such file or directory" but that cant be because open would've failed
}
答案 0 :(得分:4)
int result = fstat(fd, &info);
if (!result){
exit(-1);
}
检查fstat
手册页,返回成功0。
答案 1 :(得分:3)
stat
返回零,大多数标准libc函数也是如此。
这是这样设计的,因此您可以轻松检查一系列库调用中的错误:
if (stat(fd, &info)) {
perror("stat");
exit(1);
}
//stat succeeded.
if (...) {
}
答案 2 :(得分:1)
根据您的使用情况,我假设您需要fstat()。 fstat()接受fd作为参数,stat()接受字符串。