executar arquivo binario

1. executar arquivo binario

Marcelo Viana
assismvla

(usa Slackware)

Enviado em 19/11/2005 - 10:18h

Gostaria de saber se existe a posibilidade de executar um arquivo binario no meu programa em C.

Ex.: o meu programa chama o cliente de e-mail...

Valeu !!


  


2. SYSTEM()

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/11/2005 - 13:06h

Existe uma funcao chamada system()

Dentro desses parenteses voce poe um comando no Shell. Tipo-

system(``ls``)
system(``mkdir pasta``)

Ou seja, no seu caso, eh soh-

system(``cliente de e-mail``)

Obs. - se o cliente de e-mail estiver na pasta /usr/bin, vc soh precisa digitar o nome dele para executa-lo.

AH! Vc precisa incluir a stdlib.h para usar o system()


3. Re: executar arquivo binario

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/11/2005 - 12:21h

se vc quiser baixar um pouco o nível do código, pode usar a função "execvp();"

int execvp( const char *file, char *const argv[]);

onde "file" é uma sequencia de chars q eh o nome do programa
e
argv é um vetor de ponteiros com os argumentos a serem passados ao programa, incluindo o programa, na primeira posicao.


4. Re: executar arquivo binario

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/11/2005 - 12:28h

para usar a execvp(), vc deve incluir a biblioteca unistd.h.
bom, para deixar seu programa um pouco mais otimizado, vc pode criar um novo processo e nele executar o seu cliente de e-mail. POis caso contrário o cliente de e-mail serah executado no lugar do seu programa.
a funcao fork() cria um novo processo-filho.
Aí vai um exemplo de como fazer isso:

if(fork()) {
//processo-pai
waitpid(pid_do_filho,NULL,0);
} else {
//processo filho
execvp("pine",NULL);
}

Desse modo vc criará um novo processo-filho e o processo pai esperará pelo filho terminar... mas podenao esperar tbm, eh soh tirar a waitpid(). Soh pra dar um exemplo. se tu te interessar, vale a pena estudar esta parte.


5. Re: executar arquivo binario

Marcelo Viana
assismvla

(usa Slackware)

Enviado em 23/11/2005 - 22:39h

Pode cre ... me tira um dulvida, o fork retorna 0 para o filho e o pid do filho para o pai não é ??


estou começando a estudar essa parte de C agora ... e estou muinto interesasdo em outras funções tm ... dup(),dup2(),sockets ... etc




6. Re: executar arquivo binario

Ricardo Rodrigues Lucca
jllucca

(usa Gentoo)

Enviado em 24/11/2005 - 14:00h

Na verdade, quando agente da um fork(). O fork cria uma copia do processo e para essa copia o fork retorna zero(isso eh cai no else aquele if) e para o processo pai o fork retorna o PID do filho.

Naquele codigo do nosso colega, o exec seria executado(ELSE do if) como um filho e o processo pai esperaria até o filho terminar de executar.

Podem me corrigir se estiver errado :p






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts