특정 디렉토리에있는 여러 파일의 권한을 변경하려고합니다. 나는 그렇게하기 위해 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
입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다