Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
rgonferreira

Trabalho fork

Recommended Posts

Pessoal, boa noite.

Preciso fazer um trabalho que é basicamente criar a partir de um processo pai, 3 processos filhos fazê-los rodar aleatoriamente e contabilizar o "tempo de vida" de cada processo filho.
Não estou conseguindo fazer essa contagem de tempo para cada processo.
Alguém pode me ajudar com isso?
Obrigado!

 

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <time.h>

int main(void)
{
int i,j,k, estado,adormecido;
pid_t pid,pid2,pid3,terminou,vetor[3];
time_t inicio,fim;
inicio = time(NULL);
srand((unsigned)time(NULL));

if((pid = fork()) < 0)
{

perror("fork erro no processo 1");
exit(1);

}

else if(pid == 0)
{
for(i=0;i<10;i++){
printf("Filho 1 executando, pid: %ld, passo:%d\n",(long)getpid(),i);
adormecido = 1 + rand() %5 ;//adormece entre 1 e 5 segundos aleatóriamente.
sleep(adormecido);
}
printf("\nPapi terminei de rodar, sou o filhinho 1\n");
_exit(0);
}
else{

/*===============================================================================================
processo 2
================================================================================================*/

if((pid2 = fork()) < 0)
{

perror("fork erro no processo 2");
exit(1);

}

else if(pid2 == 0)
{
for(j=0;j<10;j++){
printf("Filho 2 executando, pid: %ld, passo:%d\n",(long)getpid(),j);
adormecido = 1 + rand() %5 ;//adormece entre 1 e 5 segundos aleatóriamente.
sleep(adormecido);
}

printf("\nPapi terminei de rodar, sou o filhinho 2\n");
_exit(0);
}
else{

/*===============================================================================================
//processo 3
================================================================================================*/

if((pid3 = fork()) < 0)
{

perror("fork erro no processo 3");
exit(1);

}

else if(pid3 == 0)
{
for(k=0;k<10;k++){
printf("Filho 3 executando, pid: %ld, passo:%d\n",(long)getpid(),k);
adormecido = 1 + rand() %5 ;//adormece entre 1 e 5 segundos aleatóriamente.
sleep(adormecido);
}
printf("\nPapi terminei de rodar, sou o filhinho 3\n");
_exit(0);

}
else{
vetor[0] = wait(pid,&estado,0);

if(!estado)
{
printf("\nOk filhinho querido, tenha uma boa noite\n");
}
vetor[1] = wait(pid2,&estado,0);

if(!estado)
{
printf("\nOk filhinho querido, tenha uma boa noite\n");
}
vetor[2] = wait(pid3,&estado,0);

if(!estado)
{
printf("\nOk filhinho querido, tenha uma boa noite\n");
}
printf("\nProcessos 1, 2 e 3 (filhos) terminaram!\n");
printf("Pai executando, pid: %ld \n",(long)getpid());
printf("\nFIM\n");
fim = time(NULL);
printf("\nTempo de execucao total de %f segundos.\n",difftime(fim,inicio));

}
}
}


}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×