std :: ifstream可以获得文件的唯一标识

时间:2018-04-04 10:15:56

标签: c++ ifstream stat

我们可以使用stat来获取inode编号,该编号可以唯一标识系统上的对象。 代码是:

int ret = stat(file_name, &file_info);
if (ret != 0) {
   //report error
}
std::cout << file_info.st_ino; inode numb
std::cout = file_info.st_dev;
std::cout = file_info.st_mtime;

因此,我们可以检查文件是否已已移动或重命名。另一个函数fstat采用int fd,而不是文件名。使用文件名不是一个好的解决方案,因为我们检查后可能会移动文件。例如:

stat(file_name)
the inode num is same as before. so the file has not been moved.
-- the file has be moved, but we can not known--//
we open the file
we process new file use old file info

fstat(fd)
the inode num is same as before. so the file has not been moved.
-- the file has be moved
ok. we process the old file  use old file info.

事情进展顺利,直到我使用c ++ ifstream,怎么办? 为fd获取ifstream ??或使用struct file *file

每个人都可以帮助我吗?

0 个答案:

没有答案