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

zecapistolas

Encontrar comando em Linux

6 mensagens neste tópico

Boas,

Preciso de uma função escrita em C, que me procure um determinado comando no Linux, mas não faço ideia por onde começar.... Tipo, o "who" encontra-se em "/usr/bin/who"....

Dicas, aceitam-se....  :biggrin:

cumps  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Abrindo uma consola em Linux e digitando "which who" o resultado é "/usr/bin/who".... Mas como faço isto em C?!

cumps  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se queres uma função em C que faça isso usa um fork seguido de um exec.

Se queres fazer a tua própria implementação disso é mais complicado...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se queres uma função em C que faça isso usa um fork seguido de um exec.

Se queres fazer a tua própria implementação disso é mais complicado...

Pois, mas o resultado de "exec" é um int e não uma String.... Eu quero utilizar o caminho internamente no programa....

cumps  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

MAN which:

It does this by searching the PATH for executable files matching the names of the arguments

Para obteres a variável de ambiente PATH só precisas de fazer:

char * path;
path = getenv("PATH");

Vais obter um string do tipo ":/bin:/etc:/usr/bin:/usr/new/X11:/usr/new:/usr/local/bin". Depois só tens que separar a string pelos ":" (*) e depois procurares o ficheiro binário nessas pastas (**)

*podes usar a função strtok, mas não te esqueças que ela altera a string, portanto tens que copiá-la (strncpy) primeiro.

**podes usar a função stat() para ver se o ficheiro existe:

if(stat("/usr/bin/hello",&st) == 0) printf("o ficheiro existe!");

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

IceBrain, obrigado pela ajuda.... Já consegui fazer o me indicas-te....  :biggrin:

cumps  :thumbsup:

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