iMode
19-06-2008, 20:21
Boas pessoal
Vou ter exame de SO e não entendo bem o funcionamento da função fork. Sei que cria um processo filho exactamente igual ao do pai e que apenas diferem no valor de retorno senão me engano. Contudo estou a ver os exames do ano passado e precisava da vossa ajuda...
int contador=0;
int main(int argc, char *argv[]) {
fork();
contador++;
fork();
contador++;
printf("valor de contador: %d\n", contador);
}
a) Quantos processos são criados durante a execução deste programa ?
Pelo que me parece são criados dois novos processos. Estou errado?
b) Indique os resultados que são escritos em stdout.
Valor de contador: 2
Corri o programa e no entanto o resultado foi este:
Valor de contador: 2
Valor de contador: 2
Valor de contador: 2
Valor de contador: 2
Para compilar o programa apenas acrescentei #include <stdio.h> #include <sys/types.h>.
É o meu raciocinio que está errado ou estou a fazer alguma coisa de errado a compilar o programa?
Se me pudessem responder a estas duas perguntas agradecia :)
Vou ter exame de SO e não entendo bem o funcionamento da função fork. Sei que cria um processo filho exactamente igual ao do pai e que apenas diferem no valor de retorno senão me engano. Contudo estou a ver os exames do ano passado e precisava da vossa ajuda...
int contador=0;
int main(int argc, char *argv[]) {
fork();
contador++;
fork();
contador++;
printf("valor de contador: %d\n", contador);
}
a) Quantos processos são criados durante a execução deste programa ?
Pelo que me parece são criados dois novos processos. Estou errado?
b) Indique os resultados que são escritos em stdout.
Valor de contador: 2
Corri o programa e no entanto o resultado foi este:
Valor de contador: 2
Valor de contador: 2
Valor de contador: 2
Valor de contador: 2
Para compilar o programa apenas acrescentei #include <stdio.h> #include <sys/types.h>.
É o meu raciocinio que está errado ou estou a fazer alguma coisa de errado a compilar o programa?
Se me pudessem responder a estas duas perguntas agradecia :)