$ unname -a
Linux crowsnest 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 23:42:43 UTC 2011 x86_64 GNU/Linux
$ 人读目录:
描述
readdir() 函数返回一个指向 dirent 结构的指针,该结构表示 dirp 指向的目录流中的下一个目录条目...
..[剪辑]...
readdir_r() 函数是 readdir() 的可重入版本...
...[剪辑]...
返回值
成功时, readdir() 返回一个指向不同结构的指针。(此结构可能是静态分配的;不要尝试释放(3)它。)如果到达目录流的末尾,则返回 NULL 并且不更改 errno。如果发生错误,则返回 NULL 并适当设置 errno。
readdir_r() 函数在成功时返回 0。出错时,它返回一个正的错误号。如果到达目录流的末尾,readdir_r() 返回 0,并在 *result 中返回 NULL。
我对这意味着什么感到困惑,我对该函数的应用是收集一个动态分配的指向结构的指针数组,其中包含有关目录条目的数据,我想知道我是否可以动态分配不同的结构并设置指向它们的指针. 但是这条线接缝说结果永远不应该被free调用,所以我想知道我是否应该分配一个单独的dirent struct,它将成为列表的一部分并将其memcpy到返回的结果上。
我也对上述手册页中的“可能”术语感到困惑。这是否意味着有时它是静态分配的,有时不是。
我(模糊地)熟悉静态变量在 C 中的含义,但不确定所有规则和可能的陷阱。因为我想传递目录中的不同结构,所以我宁愿动态分配它。这是 readdir_r 的用途吗?还是将双指针设置为指向另一个静态分配的 dirent 结构?
而且我不完全确定在这种情况下对于 readdir_r 的重入意味着什么。我对 renetrant 的理解仅来自方案协程,我不确定这将如何应用于读取 unix 目录。