当前位置: 技术问答>linux和unix
关于readdir和stat两个函数的疑问
来源: 互联网 发布时间:2017-05-10
本文导语: 当我们使用readdir时一般会定义一个DIR*和dirent*,一个相当于文件描述符,另一个用来读取目录结构体内容 像这样 DIR*pDIR=opendir(....); struct dirent*pSD; while((pSD=readdir(pDIR)!=NULL).... ... closedir(pDIR); 当我们使用stat时一般会定...
当我们使用readdir时一般会定义一个DIR*和dirent*,一个相当于文件描述符,另一个用来读取目录结构体内容
像这样
当我们使用stat时一般会定义一个stat结构体
发现dirent结构体的内存不是自己申请的,也不需要释放
而stat结构体是需要自己分配结构体空间的,像这样的结构体unix接口里还有很多,而且大部分用指针以便带回返回值。
有没有一种特定习惯能区分哪些需要自己分配空间,哪些是系统分配?
(比如系统分配的都需要调用close*???)
像这样
DIR*pDIR=opendir(....);
struct dirent*pSD;
while((pSD=readdir(pDIR)!=NULL)....
...
closedir(pDIR);
当我们使用stat时一般会定义一个stat结构体
struct stat sb;
if(stat(...,&sb)!=0)...;
发现dirent结构体的内存不是自己申请的,也不需要释放
/*
On success, readdir() returns a pointer to a dirent structure. (This
structure may be statically allocated; do not attempt to free(3) it.)
*/
而stat结构体是需要自己分配结构体空间的,像这样的结构体unix接口里还有很多,而且大部分用指针以便带回返回值。
有没有一种特定习惯能区分哪些需要自己分配空间,哪些是系统分配?
(比如系统分配的都需要调用close*???)
|
很抱歉没有,不过若是系统分配的,基本都要注意是否是线程安全的。
|
目前还没发现什么规律。