Examine o programa em C abaixo.#include <stdio.h>#incl...

Próximas questões
Com base no mesmo assunto
Q2635555 Arquitetura de Software

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:

Alternativas