C 列出其他目录中的目录名称
C listing names of directories from other directory
我正在编写一个列出目录名称的程序。这不是一个非常复杂的代码,但是在我启动我的程序后我得到了奇怪的错误
#include <dirent.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main() {
struct dirent * dir;
struct stat buf;
DIR *d;
if(d = opendir("/..."))
{
while(dir = readdir(d))
{
if(S_ISDIR(buf.st_mode))
puts(dir->d_name);
closedir(d);
}
}
else
perror("read");
return 0;
}
我得到的输出是
*** Error in `./names.exe': double free or corruption (top): 0x00000000011d3010 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81499)[0x7f702b1bc499]
/lib64/libc.so.6(closedir+0xd)[0x7f702b1fbaed]
./names.exe[0x40068d]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f702b15d445]
./names.exe[0x400579]
======= Memory map: ========
我做错了什么?
您在读取目录流的过程中关闭了目录流。变化:
while(dir = readdir(d))
{
if(S_ISDIR(buf.st_mode))
puts(dir->d_name);
closedir(d);
}
至:
while(dir = readdir(d))
{
if(S_ISDIR(buf.st_mode))
puts(dir->d_name);
}
closedir(d);
这样你就不会关闭它,直到你完成它。
我正在编写一个列出目录名称的程序。这不是一个非常复杂的代码,但是在我启动我的程序后我得到了奇怪的错误
#include <dirent.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main() {
struct dirent * dir;
struct stat buf;
DIR *d;
if(d = opendir("/..."))
{
while(dir = readdir(d))
{
if(S_ISDIR(buf.st_mode))
puts(dir->d_name);
closedir(d);
}
}
else
perror("read");
return 0;
}
我得到的输出是
*** Error in `./names.exe': double free or corruption (top): 0x00000000011d3010 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81499)[0x7f702b1bc499]
/lib64/libc.so.6(closedir+0xd)[0x7f702b1fbaed]
./names.exe[0x40068d]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f702b15d445]
./names.exe[0x400579]
======= Memory map: ========
我做错了什么?
您在读取目录流的过程中关闭了目录流。变化:
while(dir = readdir(d))
{
if(S_ISDIR(buf.st_mode))
puts(dir->d_name);
closedir(d);
}
至:
while(dir = readdir(d))
{
if(S_ISDIR(buf.st_mode))
puts(dir->d_name);
}
closedir(d);
这样你就不会关闭它,直到你完成它。