
paulo1205
(usa Ubuntu)
Enviado em 05/03/2013 - 15:35h
Provavelmente seria melhor perguntar numa comunidade de C (existe uma aqui no VoL, e eu participo dela) ou de desenvolvimento de software básico. Mas não há por quê não responder aqui mesmo.
A função
execve() é uma chamada do sistema operacional, e ela requer saber com precisão o que deve ser executado. No entanto, existem várias outras funções relacionadas, como
execlp() ou
execvpe(), que chamam
execve() internamente, mas que, antes de o fazer, oferecem outros recursos, como o de buscar o programa a ser executado nos componentes da variável de ambiente
PATH.
Leia a documentação dessas funções.
Com relação a um comando externo
cd, eu acho que ele provavelmente não existe, pois não faria muito sentido. O diretório corrente é uma propriedade de cada processo e, embora essa propriedade seja copiada paa novos processos criados a partir de um processo original, um processo já existente não consegue alterar o diretório de outro processo já existente (a não ser eles tenham sido especificamente programados para fazer isso, ou que você dê um jeito "hacker" de interferir na execução normal do outro processo). Para mudar o diretório corrente do seu shell e de processos que ele venha a disparar, você terá de chamar a função
chdir() (que, na verdade, é outra chamada de sistema, como o é
execve()).