代码应该监视文件系统的变化,但是fstat产生的结果与stat不同,为什么?为什么fstat不等于stat?
struct stat info;
struct stat finfo;
char *path = "test";
int fd = open(path, O_EVTONLY);
if (fd <= 0){
exit(-1);
}
wait_for_write(fd);
int err = fstat(fd, &finfo);
if (err){
exit(-1);
}
err = stat(path, &info);
if (err){
exit(-1);
}
if (finfo.st_mtimespec.tv_sec != info.st_mtimespec.tv_sec){
//This happens!
exit(-1);
}
finfo.st_mtimespec.tv_sec
是对应的时间之前写发生和info.st_mtimespec.tv_sec
是对应于后
一个功能永远不会与另一个“相等”。 – 2012-01-08 17:15:58
也许是因为涉及到一个符号链接,或者是因为另一个进程正在同一个文件上做某件事...... – 2012-01-08 17:15:58
那么,这两个值之间有什么区别?有什么提示? – 2012-01-08 17:16:22