alexvaz Posted October 25, 2006 at 04:22 PM Report #60007 Posted October 25, 2006 at 04:22 PM 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?
Hipnoted Posted October 25, 2006 at 04:46 PM Report #60014 Posted October 25, 2006 at 04:46 PM 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"
alexvaz Posted October 25, 2006 at 05:43 PM Author Report #60026 Posted October 25, 2006 at 05:43 PM 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...
Rui Carlos Posted October 25, 2006 at 05:54 PM Report #60028 Posted October 25, 2006 at 05:54 PM 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. Rui Carlos Gonçalves
Hipnoted Posted October 25, 2006 at 05:57 PM Report #60029 Posted October 25, 2006 at 05:57 PM 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"
TheDark Posted October 25, 2006 at 08:41 PM Report #60106 Posted October 25, 2006 at 08:41 PM Experimenta fazer . entra_directoria teste Em bash script funciona, com programas compilados não sei... Desaparecido.
alexvaz Posted October 26, 2006 at 11:23 PM Author Report #60313 Posted October 26, 2006 at 11:23 PM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now