gpt4 book ai didi

C - chmod() 不改变权限

转载 作者:太空宇宙 更新时间:2023-11-04 00:45:36 25 4
gpt4 key购买 nike

我正在尝试更改位于特定目录中的一堆文件的权限。我正在使用 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 之前获取的相同旧标志>.

关于C - chmod() 不改变权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41287692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com