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