chdir() no funciona como pretendo en c

Iniciado por juligarc10, 28 Septiembre 2020, 21:47 PM

0 Miembros y 1 Visitante están viendo este tema.

juligarc10

Hola amigos. Estoy haciendo una shell en c como ejercicio práctico. Estaba implementando el equivalente a "cd" en la shell de linux. Funciona de maravilla, exceptuando que si tu quieres retroceder un directorio poniendo "cd ..", lo que sucede es que retrocede dos directorios, es decir... Si estás en /home/usario/Escritorio, te lleva a /home.

La función es esta, aunque no creo que esté mal. Sabéis como se puede solucionar?

void cddir(char *tr) {
    if(chdir(tr)==0) {
        chdir(tr);
    } else {
        printf("%s %s\n", "No existe el directorio: ", tr);
    }
}


Gracias.

K-YreX

Esto es porque estás llamando 2 veces a la función chdir(). Primero la llamas dentro de la condición del if() y después dentro del cuerpo.

int cddir(char *tr){
  return chdir(tr);
}

int main(){
  //...
  char tr[] = "..";
  if(!cddir(tr)) printf("Error!! No existe el directorio %s", tr);
  //...
}
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;