使用fstat确定文件类型

时间:2012-05-12 04:34:10

标签: c fstat

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

我知道它返回一个stat结构,所以我可以简单地创建一个变量并将其存储起来吗?例如:

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

你是如何获得结构的?它是否在其他地方返回?我需要访问off_t st_size变量,所以我知道文件有多少字节。可以将其转换为int吗?

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

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

1 个答案:

答案 0 :(得分:2)

fstat不分配内存,需要为其分配预分配空间的地址。例如:

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

注意缺少指针。