取消链接不删除文件

Unlink Not Removing File

试图在下面的代码中了解为什么取消链接不起作用(不删除文件)。我唯一能想象的是程序认为我仍在与文件交互,所以它实际上并没有取消链接,因为它仍在使用中。该代码是 "rm"

的副本
void directorySearch(const char *dName)
{
        DIR *dir;
        struct dirent *ent;
        if ((dir = opendir (dName)) != NULL)
        {
                while ((ent = readdir (dir)) != NULL)
                {

                        if ( ent->d_type!=DT_DIR)
                        {
                                //Where the crazy happens
                                printf ("%s\n", ent->d_name);
                                char path[PATH_MAX];
                                const char * d_name = ent->d_name;
                                unlink(path);
                        }
                        if ( ent->d_type==DT_DIR && strcmp(ent->d_name, ".")!= 0 && strcmp(ent->d_name, "..") != 0)
                        {
                                int path_length;
                                char path[PATH_MAX];
                                const char * d_name = ent->d_name;

                                path_length = snprintf (path, PATH_MAX, "%s/%s", dName, d_name);

                                directorySearch(path);
                        }
                }
                closedir (dir);
        }
        else
        {
                cout << "error with "<< dName<< endl;
        }
}

使用取消链接而不是删除进行编辑,虽然两者都不起作用...

您已经声明了路径变量,但实际上并未将任何内容复制到该变量中。所以这是个问题。此外,当然您应该检查来自 unlink 的 return 值,如果小于零,则检查 errno 以确定错误的确切性质。 (通常没有此类文件的权限。)