FC ConcursosFC Concursos

Questão FC266135

Considere um sistema Linux Ubuntu versão 18.04.2 LTS para arquiteturas 64 bits. Dado o seguinte código fonte na linguagem C: #include <stdio.h> #include <unistd.h> int main() { int

Linguagens de Programação

IDECAN · 2019

Considere um sistema Linux Ubuntu versão 18.04.2 LTS para arquiteturas 64 bits. Dado o seguinte código fonte na linguagem C:

 

#include <stdio.h>

#include <unistd.h>

int main() {

   int i;

   for (i = 0; i < 4; i++) {

                            if (i % 2 == 0) {

                                           fork();

                            }

              }

              return 0;

}

 

Assinale a alternativa que indica corretamente, incluindo o processo pai inicial, quantos processos são criados pelo programa mostrado no código após compilação com o compilador GCC e execução na linha de comando.

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
Mostrar resposta e comentário

Gabarito

B

Comentário do professor

O gabarito é 4. O laço percorre \(i \in \{0,1,2,3\}\) e o fork() é executado apenas quando \(i\%2==0\), ou seja em i=0 e i=2.

Na iteração com i=0 o processo original gera um filho: passa de 1 para 2 processos.

Como o fork() copia o estado (incluindo o valor de i), tanto o pai quanto o filho continuam o laço. Ao chegar em i=2, os dois processos existentes executam fork() simultaneamente, cada um criando mais um processo — ou seja, surgem +2 processos.

Contagem final: \(1\) (original) + \(1\) (filho em i=0) + \(2\) (filhos em i=2) = \(4\) processos.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo