- 论坛徽章:
- 0
|
开始执行时用的是/home文件夹,所以打开的目录流很多,由于显示太乱,中途强行中止程序执行了,可能因为这样closedir()还没执行,导致现在执行时出现不能打开的现象,
[heixia@localhost program]$ ./printdir
Directory scacn of /home/program:
cannot open directory: /home/program
done.
|
请问可以怎么解决,谢谢
(应该只要把打开的文件流关闭就行了,怎么关?)
源程序
#include <unistd.h>
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
#include <stdlib.h>
void printdir( char *dir,int depth )
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;
if( ( dp = opendir( dir ) ) == NULL ){
fprintf( stderr,"cannot open directory: %s\n",dir );
return;
}
chdir( dir );
while( ( entry = readdir( dp ) ) != NULL ){
lstat( entry->d_name,&statbuf );
if( S_ISDIR( statbuf.st_mode ) ){
if( strcmp( "." ,entry->d_name)== 0 ||
strcmp( ".." ,entry->d_name)== 0 )
continue;
printf( "%*s%s/\n",entry->d_name );
printdir( entry->d_name,depth + 4 );
}
else printf( "%*s%s\n",depth,"",entry->d_name );
}
chdir( ".." );
closedir( dp );
}
int main( )
{
printf( "Directory scacn of /home/program:\n" );
printdir( "/home/program",0 );
printf( "done.\n" );
return 0;
}
|
|
|