Jump to content

[C em Linux] Ajuda: Função chdir (Resolvido)


alexvaz
 Share

Recommended Posts

Estou com um problema a utilizar a função chdir(). O seu uso parece simples, e a ideia é apenas criar um comando semelhante ao "cd" da shell (não tem grande uso prático, mas é um exercicio).

Penso que bastará no main() chamar a função:

int void main(int argc, char *argv)

{

chdir(argv[1]);

}

Depois de compilar, com o nome entra_directoria, ao fazer:

./entra_directoria teste

apesar da directoria existir, ele não entra e fica onde estava.

Alguém sabe qual será o problema?

Link to comment
Share on other sites

Eu o ano passado tive de fazer um cliente de FTP em C, e como todos sabem existem opções para mudar de directoria. E usei o chdir() sem problemas.

Para mudar de directoria localmente tinha a seguinte função:

void opcao_cd_local()
{
char comando2[20];
scanf("%s",comando2);
chdir(comando2);
}

Mas eu acho que estás a definir mal o main(), em vez do que puseste faz assim:

int main(int argc, char *argv[])

Diz se resultou. ;)

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

Pois, eu tenho como tu tens. Em cima é que me enganei...

Tenho exactamente como tu, mas náo funciona... depois de executar fica exactamente na directoria em k estava...

Link to comment
Share on other sites

experimenta o seguinte programa

int main(int argc,char** argv)
{
  chdir(argv[1]);
  system("ls");

  return 0;
}

acho que o chdir muda o directório de trabalho do processo/programa que invoca a função. como não é a bash que invoca essa função, o directório actual continua a ser o mesmo.

Link to comment
Share on other sites

acho que o chdir muda o directório de trabalho do processo/programa que invoca a função. como não é a bash que invoca essa função, o directório actual continua a ser o mesmo.

Deve ser isso porque eu fiz agora o programa e não consegui.

Com o meu cliente de ftp conseguia porque estava a correr o programa que invocava a função... Estamos sempre a aprender!

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

experimenta o seguinte programa

int main(int argc,char** argv)
{
  chdir(argv[1]);
  system("ls");

  return 0;
}

acho que o chdir muda o directório de trabalho do processo/programa que invoca a função. como não é a bash que invoca essa função, o directório actual continua a ser o mesmo.

É mesmo isso! Afinal o código que tinha está certo para o que era pretendido. Obrigado a todos por me ajudarem a perceber qual era o problema, que afinal não era problema, eu é que estava a querer um resultado diferente do que era esperado.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.