C++ c++;检查Unix中是否存在目录,如果存在则调用void函数。
因此,我尝试实现linux命令rm-rf,主要是:C++ c++;检查Unix中是否存在目录,如果存在则调用void函数。,c++,unix,directory,C++,Unix,Directory,因此,我尝试实现linux命令rm-rf,主要是: 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]); } 我试图做的是,如果用户输入是directory,那么调用void remove_dir();
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]);
}
我试图做的是,如果用户输入是directory,那么调用void remove_dir();删除目录,但它只打印argv[i]是否为目录。任何建议都会非常有用。您需要使用函数
stat
填充struct stat sb
:
struct stat sb;
if (stat(argv[i], &sb) != 0)
{
perror(argv[i]);
}
然后,也只有到那时,你才能使用
S_ISDIR(sb.st_模式)
你从来没有做过任何事情来填充sb
,所以我认为sb.st_模式
指令is目录状态的机会是完全随机的(而且是未定义的行为,因为内容是不确定的)。