我使用了一段代码来检查目录是否为空。但是,closedir()似乎会导致Ubuntu上的核心转储。有什么想法吗?
目录存在。 Opendir返回一个句柄,readdir能够访问具有该句柄的目录,该函数执行它应该执行的操作。但是,当我尝试关闭目录时,程序崩溃并显示错误
*** glibc detected *** ./chelper: free(): invalid next size (normal): 0x00000000017f10b0 ***
我目前的解决方法就是让目录保持打开状态,因为这只是帮助你做一些更大的事情的帮手。它运行,是suid部分和退出。我只是讨厌让事情开放......
root@honecker:~/Project# uname -a Linux honecker 3.5.0-31-generic #52~precise1-Ubuntu SMP Fri May 17 15:27:06 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
/* Check if mount point is empty true=empty false=not empty */
int is_dir_empty(char *path) {
int c=0;
struct dirent *dent=NULL;
DIR *directory=NULL;
directory = opendir(path);
if (directory == NULL) {
perror(PNAME);
exit(1);
}
while ((dent = readdir(directory)) != NULL)
if (++c > 2)
break;
if (closedir(directory) == -1) {
perror(PNAME);
exit(1);
}
if (c <= 2)
return 1;
else
return 0;
}