Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas Com: If ( Fork()==0 ) Execl(...


magronez

Pergunta

estou tentando usar o comando execl para executar um comando em shell.

O execl está dentro de um while que vai de 1 até 253, ou seja, o execl é executado 253 vezes, só que quando chega +- no 104 por algum motivo o execl não consegue mais ser executado, coloquei um printf para me mostrar se realmente o while chega no 253 e ele chega sem problemas, só o execl que não é mais executado, tb coloquei um system("ls") pra ver no que dava... se eu coloco antes do 104 ele funciona normal, se eu coloco depois ele tb não é executado...

alguém sabe o que pode ser?

#include <stdio.h>

int main ()

{

char primeiro;

int fultimo;

int fprimeiro;

fultimo=253;

fprimeiro=1;

while (fultimo >= fprimeiro)

{

//printf("\fprimeiro=%d\nfultimo=%d\n",fprimeiro,fultimo);

sprintf(fprimeiro,"%d",primeiro);

sleep(1);

if ( fork()==0 ) execl( "/bin/echo","echo","=",&primeiro,NULL);

fprimeiro=fprimeiro+1;

}

}

esse é um exemplo do que estou falando, apezar de que está dando um erro estranho na hr de compilar (no sprintf), coisa que no programa não dá erro, compila e funciona normal...

ah... eu já tentei usar um sleep de até 10 segundos, mas não resolveu, o problema não é o tempo e sim algo referente a quantidade de processos mesmo...

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

por alguma razao a funcao fork() pode gerar um erro apos um certo periodo.....

para confirmar você pode fazer assim.....

#include <stdio.h>
int main ()
{
     char primeiro;
     int fultimo;
     int fprimeiro;
     fultimo=253;
     fprimeiro=1;
     while (fultimo >= fprimeiro)
     {
          //printf("\fprimeiro=%d\nfultimo=%d\n",fprimeiro,fultimo);
          sprintf(fprimeiro,"%d",primeiro);
          sleep(1);
          if ( fork()==0 ) execl( "/bin/echo","echo","=",&primeiro,NULL);
          else if(fork==-1)
                printf("\nMinha funcao fork() gerou um erro!!!");
          fprimeiro=fprimeiro+1;
     }
}

epero ter ajudado....

te+.........

Link para o comentário
Compartilhar em outros sites

  • 0

Hum... mais um . Bem vindo

Também tenho o mesmo problema, a funcao printf não imprime após N vezes.


void main(void){

funcao(); Executa muitas vezes o printf

printf("Primeiro printf");
printf("Segundo printf");
}

Se chamar a funcao imprime normalmente, e no final apenas "Segundo printf"

Se não chamar a funcao imprime "Primeiro printf" "Segundo printf"

Muito estranho..., mas ocorre em diversos codigos, com estas condiçoes.

BUG do software?! Utilizo Turbo C 3.0

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...