#include <fstab.h>
struct fstab *getfsent(void);
http://man7.org/linux/man-pages/man3/getfsent.3.html
getfsent
从文件中读取一行/etc/fstab
并返回类型为 的变量struct fstab*
。我需要释放它吗?还是由别人管理的?如果它是由其他人管理的,为什么返回类型不是const struct fstab*
?我检查了上面的参考资料,但找不到任何有用的东西。
答案1
至少对于 glibc 来说,你不应该这样做。这来源表示该指针指向内部状态结构的成员,因此它不是您可以直接释放的东西。
这文档也暗示了这一点:
为了读取文件的全部内容,
fstab
GNU C 库包含一组以通常方式设计的三个函数。
这里的“通常”方式是这样的getpwent
:
返回值可能指向静态区域,并且可能会被后续调用
getpwent()
、getpwnam(3)
或覆盖getpwuid(3)
。 (不要将返回的指针传递给free(3)
。)
另外,glibc 文档专门针对getfsent
:
该函数返回一个指向 类型变量的指针
struct fstab
。该变量由所有线程共享,因此该函数不是线程安全的。如果发生错误,getfsent 返回一个NULL
指针。
该变量是共享的,这强烈表明您不应该搞乱内存管理。
如果您想释放资源,请使用endfsent()
,这将清除内部状态。