Programovani - fork, exec a spol.

David Sauer davids na iol.cz
Pátek Leden 8 00:20:33 CET 1999


>>>> "Petr" == Petr Novotny <Petr.Novotny na antek.cz> writes:

    >> Myslim, ze jedina moznost je, aby parent provedl 'signal(SIGCLD,
    >> SIG_IGN)'. Tim oznami, ze nema o exit status potomka zajem. Pokud
    >> to nemuze udelat, jak moc vadi ty zombie ?

    Petr> Krome toho, ze jsou neesteticke :-) je hlavni problem v tom, ze by 
    Petr> pri kazde POP3 autentifikaci vznikl jeden.

Spise jde o to, jak takovy autentizacni proces bezi. Pokud se startuje
pokazde znovu, detske zombie (fuj, to je slovo) by nevadily. Pokud
bezi porad, tak by zombie asi zaplnovaly tabulku procesu, az by ji
zaplnily...
  Jinak, signal(..) lze preci provest v odforkovanem procesu(nebo
ne?),  asi takto:

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

int main()
{
	// nedela zadne kontroly
  pid_t pid = fork();

  if( pid == 0 )
    { // jsem dite
      if( fork() == 0 )
	execl("/bin/ls", "ls", NULL);
      else
	exit(0);
    }
  else
    { // jsem rodic
      int status;
      int options = 0;
      
      waitpid( pid, &status, options );
      while(1);
    }
  return 0;
}


-- 
* David Sauer, student of Czech Technical University
* electronic mail: davids na iol.cz (mime compatible)


Další informace o konferenci Linux