Foro de elhacker.net

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?

Código:
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.
Código
  1. int cddir(char *tr){
  2.  return chdir(tr);
  3. }
  4.  
  5. int main(){
  6.  //...
  7.  char tr[] = "..";
  8.  if(!cddir(tr)) printf("Error!! No existe el directorio %s", tr);
  9.  //...
  10. }