[so] Intrebari lab. 6
Lucian Adrian Grijincu
lucian.grijincu at gmail.com
Fri Apr 3 00:16:00 EEST 2009
2009/4/2 Bogdan Sass <bogdan.sass at catc.ro>:
> 1. De ce in codul oferit pentru nohup (linux) se face un fork? Nu era
> suficient un ignore signal/exec? Care ar fi avantajele abordarii bazate pe
> fork?
> 2. La punctul 2 ( mkzombie/nozombie ), am incercat sa realizez o
> implementare bazata pe SA_NOCLDWAIT ( http://linux.die.net/man/2/sigaction
> ). Fara rezultat (copilul se transforma in continuare in zombie).
> Am aflat ulterior ca pot obtine efectul dorit (nozombie :P ) ignorand
> semnalul SIGCHLD (handler=SIG_IGN).
> Intrebarea este - care sunt diferentele dintre cele doua abordari? De ce a
> mai fost introdus NOCLDWAIT (din cate vad eu e "Linux 2.6 or above"), daca
Ignorarea explicită a lui SIGCHLD are comportamentul ăsta în Linux
pentru că așa au hotărât implementatorii: vezi aici sursa
http://lxr.linux.no/linux+v2.6.24/kernel/signal.c#L1487
Din sigaction(2):
POSIX.1-1990 disallowed setting the action for SIGCHLD to SIG_IGN.
POSIX.1-2001 allows this possibility, so that ignoring SIGCHLD can be
used to prevent the creation of zombies (see wait(2)). Nevertheless,
the historical BSD and System V behaviors for ignoring SIGCHLD differ,
so that the only completely portable method of ensuring that terminated
children do not become zombies is to catch the SIGCHLD signal and per‐
form a wait(2) or similar.
din wait(2):
The original POSIX standard left the
behavior of setting SIGCHLD to SIG_IGN unspecified. Note that even
though the default disposition of SIGCHLD is "ignore", explicitly set‐
ting the disposition to SIG_IGN results in different treatment of zom‐
bie process children.
NOCLDWAIT e definit în unul din standardele POSIX e menționat de ex. aici:
http://www.opengroup.org/onlinepubs/007908799/xsh/_exit.html
Tot din sigaction(2):
POSIX.1-1990 only specified SA_NOCLDSTOP. POSIX.1-2001 added SA_NOCLD‐
WAIT, SA_RESETHAND, SA_NODEFER, and SA_SIGINFO. Use of these latter
values in sa_flags may be less portable in applications intended for
older Unix implementations.
--
.
..: Lucian
More information about the so
mailing list