Executando shells por programas em C

1. Executando shells por programas em C

Paulo
paulo_moc

(usa Ubuntu)

Enviado em 18/09/2012 - 02:37h

olá pessoal, gostaria de saber se existe algum modo de um programa em C executar uma shell, mas a resposta vir para ele, exemplo :

...
executa_shell("dir");//função para executar a shell
...

nesse exemplo os arquivos contidos no diretório viessem todos para o programa, é basicamente uma interface(se estiver usando errado me corrijam =]) entre o bash e o usuário, onde a saída de um programa(saída da bash) é a entrada do outro(meu).

se alguém puder me ajudar eu agradeço.


  


2. Re: Executando shells por programas em C

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/09/2012 - 03:01h

Pelo teu dir ali, acho que é sobre windows que estamos falando.

#include <stdlib.h>

system("comando do dos");


Não entendi muito bem, mas tu pode usar por exemplo: system("dir > file");
E ler o arquivo file.

Ou jogar a chamada do system em alguma função. Me falta criatividade essa hora da madrugada aiuhfusdah


3. Re: Executando shells por programas em C

Paulo
paulo_moc

(usa Ubuntu)

Enviado em 18/09/2012 - 03:19h

hmm... na verdade eu tava pensando em linux, eu sempre uso dir no Ubuntu, vou fazer uns testes aqui, eu queria que fosse de uma forma que ficasse em uma string que eu pudesse manipular...


4. Re: Executando shells por programas em C

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 18/09/2012 - 07:39h

# include stdlib.h

system("comando linux");

Pode colocar o caminho do comando também:

system("/diretorio/comando");

Mas isso se ele tiver permissão de execução.

A função system() "chama" comandos do sistema o qual o programa em C está sendo executado. Não pode chamar comandos do Win no Linux e vice-versa.

Outra observação é que você tem que escrever um system() para cada comando, não pode importar todos os comandos de um diretório.


5. Re: Executando shells por programas em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 18/09/2012 - 11:28h

Leia sobre pipes (por exemplo, a manpage de popen e pipe).


6. Re: Executando shells por programas em C

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/09/2012 - 13:04h

rei_astro escreveu:

# include stdlib.h

system("comando linux");

Pode colocar o caminho do comando também:

system("/diretorio/comando");

Mas isso se ele tiver permissão de execução.

A função system() "chama" comandos do sistema o qual o programa em C está sendo executado. Não pode chamar comandos do Win no Linux e vice-versa.

Outra observação é que você tem que escrever um system() para cada comando, não pode importar todos os comandos de um diretório.

Interessante, não sabia que era a mesma chamada hehehh.


@shoxsz: Dependendo do que tu estás procurando fazer, chamadas para as APIs do linux podem solucionar também.

*comando dir é feio, usa ls :p*


7. Re: Executando shells por programas em C

Paulo
paulo_moc

(usa Ubuntu)

Enviado em 18/09/2012 - 23:57h

hehe, tenho que desapegar do windows...

é vou tentar aqui, e Paulo, vou dar uma olhadas nas funções que disse, acho que eu já vi elas em algum site quando estava procurando sobre a função fork().







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts