【问题标题】:c++ Checking if a directory exists in Unix and call void function if it exists.c++ 检查 Unix 中是否存在目录,如果存在则调用 void 函数。
【发布时间】:2017-08-28 18:11:39
【问题描述】:

所以我正在尝试实现 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] 是否是目录。任何建议都会非常有帮助。

【问题讨论】:

  • 你从来没有做过任何事情来填充sb,所以我可以想象sb.st_mode 指示 is-directory 状态的机会是完全随机的机会(和未定义的行为,因为内容是 不确定)。

标签: c++ unix directory


【解决方案1】:

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

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

那么,只有这样,你才能使用S_ISDIR(sb.st_mode)

【讨论】:

    猜你喜欢
    • 2011-04-19
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多