• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

alexvaz

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

7 mensagens neste tópico

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta fazer

. entra_directoria teste

Em bash script funciona, com programas compilados não sei...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora