Como programar um Processo Zumbi?

1. Como programar um Processo Zumbi?

Reno Costa Alencar
renoalencar

(usa Debian)

Enviado em 08/11/2014 - 23:08h

Galera, não tenho muita base em C e preciso criar um processo zumbi. Procurei alguns códigos para entender e me basear, porém não consigui criar um programa, por conta própria, que venha a ser um processo zumbi. Percebi, que pelo menos nos códigos que encontrei, que o pessoal utiliza do pid_t pidi() (o que isso faz?), utiliza do pid = fork() (no caso ele estaria clonando o pid do processo pai?) e, além disso, utilizam de dois ifs: if(pid >= 0); if(pid == 0). Saberiam me informar para que esses IFs? Mando um dos links dos principais códigos que me baseei http://www.gbzando.com.br/processos-zumbis/
ps: Podem me explicar o que são as instruções int argc, char *argv[] no int main?
obs: Aproveitando a deixa, o fork ele clonaria o processo pai por inteiro? No caso, um processo pai com 4 forks resultaria em 4 filhos ou 16 filhos?


  


2. Re: Como programar um Processo Zumbi?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 09/11/2014 - 12:48h

Eu me pergunto para que alguém gostaria de criar um processo zumbi. Processos zumbis normalmente são uma coisa que se quer evitar, e a presença de zumbis por tempo perceptível normalmente indica uma aplicação mal escrita.

Um zumbi é um processo que terminou (i.e. já chamou _exit() ou foi interrompido por um sinal que faz o processo terminar), mas cujo término ainda não foi devidamente reconhecido pelo processo pai. Assim sendo, se você tem um processo original que cria um processo filho, o processo filho vai permanecer como zumbi desde o instante em que termina até o momento em que o pai chamar uma das funções da família de wait(). O sistema operacional mantém o processo como zumbi para que o processo pai tenha a chance de colher estatísticas sobre a utilização do filho, por meio de getrusage() ou wait4().

Se você chamar fork() indiscriminadamente quatro vezes no mesmo programa, vai ficar, sim, com 16 processos. No entanto, quase sempre um processo cria um filho com um propósito específico, e o fluxo de execução do filho é diferente do fluxo de execução do pai. É por isso que chamadas a fork() costumam ser seguidas por um bloco if/else if ou switch.


3. Re: Como programar um Processo Zumbi?

Reno Costa Alencar
renoalencar

(usa Debian)

Enviado em 09/11/2014 - 13:10h

Valeu pela explicação =]
Então, a necessidade de criar um programa zumbi está ligada a uma atividade de Sistemas Operacionais que preciso fazer. Não sou muito adepto de sair pegando códigos, porém eu não sei como desenvolver um programa com essa finalidade por conta própria. Por isso, também, saí procurando alguns códigos e tentei estuda-los e não entendi muito bem aquelas partes que mencionei [pid_t pid; pid = fork (); if (pid >= 0); if (pid == 0)].


4. Re: Como programar um Processo Zumbi?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 09/11/2014 - 21:22h

Já leu a documentação da chamada fork()? Lá as coisas estão bem claras.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts