c ++检查Unix中是否存在目录,如果存在则调用void函数。

时间:2017-04-03 18:43:07

标签: 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]);
}

我要做的是,如果用户输入是目录,则调用void remove_dir();删除目录,但它只是打印argv [i]是否是目录。任何建议都会非常有用。

1 个答案:

答案 0 :(得分:1)

您需要使用struct stat sb函数填充stat

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

然后,只有这样,您才能使用S_ISDIR(sb.st_mode)