2017-04-03 11 views
0

だから私は、Linuxのコマンドのrm -rfを実装しようとしていると、私のメインの中で、私のようなものがあります:私が何をしようとしています何C++ Unixにディレクトリが存在するかどうかをチェックし、存在する場合はvoid関数を呼び出します。

struct stat sb; 
if(unlink(argv[i]) == 0) 
{ 
    printf (argv[i]); printf(" Deleted\n"); 
} 
if (S_ISDIR(sb.st_mode)) 
{ 
    remove_dir(argv[i]); 
} 
else 
{ 
    perror(argv[i]); 
} 

は、ユーザ入力がディレクトリである場合、ボイドremove_dirを呼び出すことです();ディレクトリを削除する代わりに、単にargv [i]がディレクトリであるかどうかを表示します。どんな提案も非常に役に立ちます。その後

struct stat sb; 
if (stat(argv[i], &sb) != 0) 
{ 
    perror(argv[i]); 
} 

、とだけにして、あなたはS_ISDIR(sb.st_mode)を使用することができます。

+3

'sb'には何も置かれませんでした。したがって、' sb.st_mode'はis-directory状態を完全にランダムなチャンスと指定する可能性があります(内容は* indeterminate *なので未定義の動作です)。 – WhozCraig

答えて

1

あなたが機能statを使用してstruct stat sbを移入する必要があります。

関連する問題