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

标签 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] 是否是目录。任何建议都会非常有帮助。

最佳答案

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

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

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

关于c++ 检查 Unix 中是否存在目录,如果存在则调用 void 函数。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43192057/

相关文章:

unity-game-engine - Unity3D 可执行文件旁边应该有 '<AppName>_Data' 文件夹

c# - 查找文件夹中的所有文件

c++ - 删除数组内对象内的动态分配对象

c++ - 使用 static_cast<Base>(*this) 初始化可变参数 CRTP...: is it legal ?

unix - Awk: how to print the field separator with your columns(字段分隔符也是一个正则表达式)

linux - 使用 Bash 删除文本文件中的列?

c - 该命令在 C 中有效吗?

c++ - ARM交叉编译,多重继承段错误

c++ - 重载分辨率和数组 : which function should be called?

java - 从 bash 文件运行多类 java 程序?