Pular para o conteúdo

execl problem...

Responder tópico
  • Denunciar
  • Indicar

1. execl problem...

Enviado em 29/03/2012 - 21:02h

tenho um programa mais complexo, com forks e pipe's etc... mas estou com um problema em usar essa a função ""execl""...

#include <unistd.h>
#include <stdio.h>

void main(){

printf("primeiro\n");

execl("/bin/ls", "ls", 0 );

printf("\nsegundo\n");
}

O problema que nem no meu programa e nem nesse simples as funcões após o execl não são executadas.

Alguma ajuda?

Responder tópico

3. Re: execl problem...

Enviado em 29/03/2012 - 21:26h

Colega, executar "execl("/bin/ls", "ls", 0 );" não manda executar o outro programa e volta, ele muda de um programa para outro. No seu caso trata-se de mudar para o programa ls.

Para isso não acontecer, conjugue "fork" + "exec". Exemplo:

...
n = fork();
if ( n == 0 ) {
execl ( "/bin/ls", "ls", "-l", NULL );
}
printf ("Fim \n" );
}


4. Re: execl problem...

Enviado em 30/03/2012 - 12:57h

Então hcabzlus ... Assim vc diria então pra min usar um "filho" pra kza execl neh??

Soh q tem um problema... por exemplo...

printf("1");
pid = fork();
if(pid == 0){
printf("2");
execl( .. .. );
}
printf("3");

a saída iria ser talvez >>>> 1 3 2 <execl>

pq o processo pai pode ser mais rapido q o filho e printar antes... e eu preciso q os comandos <execl> sejam executador em um ordem...

Edit:

Na vdd posso fazer assim dae né...

printf("1");
pid = fork();
if(pid == 0){
printf("2");
execl( .. .. );
}

waitpid( pid, &status, 0 );
if( WIFEXITED(status) )
printf("3")

Dae da certo.. 1 2 <execl> 3

@hcabzlus essa seria sua ideia mesmo então né um filho pra kda execl ?




Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder