【问题标题】:Using fstat to determine file type使用 fstat 确定文件类型
【发布时间】:2012-05-20 15:00:03
【问题描述】:

所以,我有一个作业,基本上是比较系统调用与库函数的速度的练习。我们正在对通过标准输入从文件中获取的字符串进行排序。我们应该确定该文件是否是常规文件或不使用 fstat。我已经阅读了手册页,虽然我知道它的作用,但我在弄清楚如何使用它时遇到了问题。

我知道它返回一个 stat 结构,所以我可以直接创建一个变量并像这样存储它吗?例如:

int n;
struct stat *val;
n = fstat(0, val);

这就是你获得结构的方式吗?是不是退回到别的地方了?我需要访问 off_t st_size 变量,所以我知道文件有多少字节。可以将其转换为 int 吗?

另外,显然您可以使用 st_mode 字段来检查文件是否是常规文件(使用宏 S_ISREG),但是......如何?它是返回真还是假?这很烦人,因为我可以找到所有这些文档,告诉我这些字段是什么,但不知道如何使用它们。

如果我有一个常规文件,我应该在任何函数调用之前分配足够的内存来存储它。如果不是,那么我在阅读时重新分配内存。我已经完成了第二部分,我只是不知道如何正确使用 fstat。

【问题讨论】:

  • 你真的,真的如果你想让他们得到回答,你需要开始用一种语言标记你的问题。

标签: c fstat


【解决方案1】:

fstat 不分配内存,你需要给它预分配空间的地址。例如:

int n;
struct stat myStat;
n = fstat(0, &myStat);

注意缺少指针。

【讨论】:

    猜你喜欢
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2012-11-05
    • 2011-01-28
    • 2011-05-09
    • 2013-04-21
    • 1970-01-01
    相关资源
    最近更新 更多