Cadernos de Questões

Provas Favoritas

Filtros Salvos

Foram encontradas 59 questões.
#3606161

Examine o programa em C abaixo.


#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>


#define NUM_ADVOGADOS 3


void advogado(int id) (

printf("Advogado %d: Preparando argumentos\n", id);

usleep(rand() % 2000000 + 1000000); // Simula o tempo de preparação

printf("Advogado %d: Apresentando o caso ao tribunal\n", id) ;

usleep(rand() % 2000000 + 1000000); // Simula o tempo de apresentação

printf("Advogado %d: Caso resolvido\n", id);

}


int main() {

srand(time(NULL));

for (int i = 1; i <= NUM_ADVOGADOS; i ++) (

if (fork() == 0) (

}

}

// Código do processo pai (tribunal)

for (int i = 1; i <= NUM_ADVOGADOS; i ++) (

wait(NULL); // aguarda todos os processos filhos terminarem

}

printf("Todos os casos foram resolvidos.\n");

return 0;

}


Considerando que uma das saídas do programa acima, compilado e executado em condições ideais, seja:


Advogado 1: Preparando argumentos

Advogado 3: Preparando argumentos

Advogado 2: Preparando argumentos

Advogado 3: Apresentando o caso ao tribunal

Advogado 2: Apresentando o caso ao tribunal

Advogado 1: Apresentando o caso ao tribunal

Advogado 1: Caso resolvido

Advogado 3: Caso resolvido

Advogado 2: Caso resolvido

Todos os casos foram resolvidos.


A lacuna I deve ser corretamente preenchida com:

  • advogado(i);
  • advogado(i); exit(0);
  • advogado(i+1);
  • advogado(i+1); break(1);
  • advogado((fork(i)); exit(1);
Fale com IAgo
IAgo - Assistente IAProva
IA
Olá! Sou o IAgo, seu assistente aqui no IAProvatec 😊
Veja como posso te ajudar:
Agora