gpt4 book ai didi

objective-c - 调试statfs?

转载 作者:搜寻专家 更新时间:2023-10-30 20:21:43 24 4
gpt4 key购买 nike

我正在使用 statfs 检索我硬盘上的可用总空间。大多数时候它会返回正确的值,但有时它只是无缘无故地返回一个错误。我想找出为什么它会在看似随机的时间生成错误。

有什么方法可以检查它为什么会产生错误?如果我打印 strerror(errno),我只会收到消息“没有这样的文件或目录”。这告诉我问题是什么,但不是导致问题的原因。我看不出有什么理由可以在某个时刻成功找到该目录,但下一刻却无法找到它。有什么办法可以检查是什么原因造成的吗?我怀疑这是否是我的代码的问题,因为如果是这样,则永远不会返回正确的数据。

我将“/”作为目录传入。我在 OS X Snowleopard 上使用 Xcode 3.2.6 使用 Objective-C/C

  • 我怎样才能找到导致它找不到小路?
  • 有哪些一般原因会导致它在某一时刻能够找到驱动器,而下一时刻却无法找到?

用于检索信息的代码:

    if (statfs(&path, &storageStats))
{
NSLog(@"Total storage stats retrieval failed with errno: %s.\n", strerror(errno));
exit(EXIT_FAILURE);
}
else
{
totalAmount = storageStats.f_blocks * storageStats.f_bsize;
NSLog(@"Storage: %f\n", totalAmount);
return self;
}

我收到“总存储统计信息检索失败...”并且错误消息是“没有这样的文件或目录”

最佳答案

statfs 的第一个参数是一个 char *。由于您传递的是 &path,这意味着该路径是一个字符。如果是这种情况,那么您有时只会传递一个以空字符结尾的字符串。 (如果 path 是 '/' 并且下一个字节恰好是 '\0',那么调用将起作用。如果 path 之后的内存不是 '\0',那么你正在向 statfs 传递一个非常奇怪的路径。)你可能是为了:

char *path = "/";statfs( path, ... )

关于objective-c - 调试statfs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9271528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com