Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Mesmo caso do socket, esse código foi compilado no gcc do Linux, por isso não deve funcionar no windows.
Foi um trabalho da faculdade do 5º período.
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <signal.h>
#include <wait.h>
void *primeira_thread(void *arg);
void *segunda_thread(void *arg);
main()
{
int i;
i=fork();
if(i==0)
{
int sinal;
printf("Digite o valor de retorno do filho:\n");
scanf("%i",&sinal);
system("clear");
exit (sinal);
}
else if(i>0)
{
pthread_t thread1, thread2;
int iret1, iret2, status;
wait (&status);
if(WEXITSTATUS(status)==0){
printf("*********EXECUCAO DA PRIMEIRA THREAD************\n\n");
iret1 = pthread_create( &thread1, NULL, primeira_thread, NULL);
}
else if(WEXITSTATUS (status)==1){
printf("*********EXECUCAO DA SEGUNDA THREAD************\n\n");
iret2 = pthread_create( &thread2, NULL, segunda_thread, NULL);
}
exit(0);
}
}
void primeira_thread(void arg)
{
int i;
for(i=0;i<=100;i++){
if(i!=100)
printf("%i - ", i);
else
printf("%i \n\n", i);
}
}
void segunda_thread(void arg)
{
int i;
for(i=100;i<=200;i++){
if((i%2)==0) {
if(i!=200)
printf("%i - ", i);
else
printf("%i \n\n", i);
}
}
}