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.
- 5
- 4
- 3
- 2
- 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