Criando meu Shell - Função execve

1. Criando meu Shell - Função execve

Pablo Silva
pablosnr

(usa XUbuntu)

Enviado em 05/03/2013 - 09:51h

Pessoal sou novo aqui,

então por favor se estiver na área errada me avisem.

Então, eu criei um shell no ubuntu. O que está faltando para
terminá-lo é somente o problema que estou tendo com a função
execve. Ela cria processos, mas eu tenho que passar o caminho absoluto
do comando. Isso é um problema que deixa o shell desfuncional.

Imagina pra usar o comando cd eu não sei muito bem aonde ele fica, acho que é
/bin/usr/cd .
Portanto queria saber como contornar esse problema. Tem algum lugar que eu possa
encontrar todos esses caminhos absolutos. Se alguém puder dar um help, agradeço!

Obg. Pablo.


  


2. Re: Criando meu Shell - Função execve

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 05/03/2013 - 10:14h

pra saber o caminho absoluto digita no terminal
$ which <comando>
e irá aparecer o caminho absoluto pra ti


3. Re: Criando meu Shell - Função execve

Paulo
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()).






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts