Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: juligarc10 en 28 Septiembre 2020, 21:47 PM

Título: chdir() no funciona como pretendo en c
Publicado por: juligarc10 en 28 Septiembre 2020, 21:47 PM
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.
Título: Re: chdir() no funciona como pretendo en c
Publicado por: K-YreX en 28 Septiembre 2020, 23:51 PM
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);
  //...
}