Closedir()在Ubuntu中转储核心

时间:2013-05-24 11:32:20

标签: c ubuntu closedir

我使用了一段代码来检查目录是否为空。但是,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;
 }

0 个答案:

没有答案