Vous êtes sur la page 1sur 1

Comando fork() - Sistemas Operacionais

Pessoal, resolvi postar algo sobre o uso do comando fork() em ambiente Linux de programao.
Quando damos o comando fork() em um programa escrito em C no Linux, ele vai criar uma cpia exata a partir do
ponto em que o comando executado e dois processos executam ao mesmo tempo, o processo pai (aquele que
chama o comando fork() ) e o processo filho (o que foi gerada pela chamada do fork() ).
Um programa simples que usa o fork() pode ser visto logo abaixo:

#include < stdio.h >
#include < stdlib.h >
#include < sys/types.h >
#include < sys/wait.h >
#include < unistd.h >

int main ()
{
pid_t filho;

filho = fork(); //aqui criamos o processo filho

if ( filho == 0 ) { //execuo do filho
printf ("Sou o filho executando...\n");
_exit(0);
}

else { //execuo do pai
printf ("Sou o pai executando.\n");
}

exit(0);
}

Uma maior explicao dos cabealhos includos nesse programa pode ser encontrado nas entradas de manual do
linux, como "man fork". Voc pode encontrar descries detalhadas de cada funo.
Podemos ver que quando damos um comando fork() um valor de retorno atribudo varivel filho. No processo pai,
esse valor diferente de zero, no processo filho, igual a zero. Observe que o que estiver abaixo do comando fork()
replicado para outro processo, ento tanto o processo pai quanto o filho iro executar o que vier abaixo, por isso
precisamos testar com o "if" o que cada um deve executar. Ento se o valor da varivel filho igual a zero, ento
quer dizer que o trecho de cdigo que o filho deve executar, caso contrrio, ser o do pai. Dessa forma, temos dois
processos executando, sendo que um foi gerado pelo outro! A ideia fazer com que os dois executem e realizem
tarefas de modo mais rpido, sendo que cada tarefa atribuda para cada um realizar separadamente, com isso
pode-se obter ganho de desempenho!
Espero que tenham gostado!

Vous aimerez peut-être aussi