我正在构建一个文件恢复工具,我遇到了一个我无法弄清楚的奇怪问题。
以下代码不会失败,但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卷。