我正在尝试更改位于特定目录中的一组文件的权限我用chmod来做该函数不会返回任何错误,但当我打印新的和旧的权限时,它看起来不会更改任何内容。

void main(int argc, char *argv[]){
    struct stat archivo;
    char *directorio = "/home/edu/Escritorio/P7/practica7/prueba";
    char *rutaRel = malloc(strlen(directorio) + 1 + NAME_MAX);
    mode_t permisos;

    modo = strtol(argv[2], NULL, 0);    //I am trying with 0664

    strcpy(rutaRel, directorio);
    rutaRel[strlen(directorio)] = '/';
    while (ep = readdir (dp)){
        strcpy(rutaRel + strlen(directorio) + 1, ep->d_name);
        stat(rutaRel, &archivo);
        if(S_ISREG(archivo.st_mode)){
            permisos=archivo.st_mode;
            if((chmod(rutaRel,modo))==-1){
                perror("Error: \n");
            }
            printf("  %s: %u -> %u\n",ep->d_name,permisos,archivo.st_mode);
        }
    }

    closedir(dp);
}

到目前为止,我还没有找到这个错误。有什么想法吗?
输出:
a4:33204->33204
a2:33204->33204
A3:33204->33204
a5:33204->33204
a1:33204->33204

最佳答案

问题是,您没有获得文件的新标志,而是在调用chmod之前打印相同的旧标志。

09-26 07:04