怎么删除一个非空的目录?

发表于:2007-05-25来源:作者:点击数: 标签:空的这是怎么删除目录
这是还没写好的源码: #include stdio.h#include stdlib.h#include dirent.h#include unistd.h#include sys/types.hint main( void ){ DIR* dirp; struct dirent* direntp; struct stat buf; pid_t pid; dirp = opendir( /share/tmp );/*打开一个目录 */ if(

这是还没写好的源码:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/types.h>
int main( void )
{
    DIR* dirp;
    struct dirent* direntp;
    struct stat    buf;
    pid_t          pid;
    dirp = opendir( "/share/tmp" );/*打开一个目录 */
    if( dirp == NULL ) {
             perror( "can't open /share/tmp" );
    } else {
        for( ; ; ) {
              direntp = readdir( dirp ); /*读目录里的内容*/
              if( direntp == NULL ) /*如果是个空目录就把它删除*/
                      rmdir(/share/tmp);
              for( ; ; ) {
                      if(lstat(directp->s_name,&buf)<0) { /*读出文件名*/
                             printf("lstat error\n");
                             exit(-1);
                      }else{
                             if( ! S_ISDIR(buf.st_mode)) < 0) { /*判断是否是一个目录*/
                                     printf("check file mode error\n");
                                     exit(1);
                             }else if
                                     unlink(directp->s_name) ; /*如果不是就删除它*/
                             else
                                     if((pid=fork())<0) {/*如果是就判断是否是一个空目录,是就删除它,这里考虑得不周到,fork一个进程,运行上面的算法,就是这里不懂了。要写个函数吧?*/
                                               printf("fork error\n");
                                               exit(1);
                                     else if(pie == 0 )
                                               chdir(directp->s_name);/*新的进程cd到新的目录*/
 
                           
 
 
        }
        closedir( dirp );
    }
    return EXIT_SUCCESS;
}

 }
        closedir( dirp );
    }
    return EXIT_SUCCESS;
}

你没有考虑'.'和'..'

原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)