Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;检查Unix中是否存在目录,如果存在则调用void函数。_C++_Unix_Directory - Fatal编程技术网

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

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();

因此,我尝试实现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();删除目录,但它只打印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目录状态的机会是完全随机的(而且是未定义的行为,因为内容是不确定的)。