我正在构建一个文件恢复工具,但遇到了一个我无法弄清楚的奇怪问题。
以下代码没有失败,但 fstat 报告的结果文件大小为 0 字节。
int f = -1;
f = open("/dev/disk2", O_RDONLY);
if (f < 0) {
printf("Unable to open file\n");
return 1;
}
struct stat s = {0};
if (fstat(f, &s) < 0) {
printf("Unable to stat\n");
return 2;
}
printf("Size: %lli\n",s.st_size);
(我将代码指向另一个文件进行测试,它正确返回了大小。)
但是,如果我在终端中键入以下内容,它会毫无问题地显示驱动器的内容:
cat /dev/disk2
我以 root 身份运行,以避免在测试时出现任何权限问题。该驱动器是一个未安装的外部 HFS 卷。